C#でクエリストリングを作る方法の備忘録です。
クエリストリングは、URLのパスの後ろに?変数名1=値1&変数名2=値2&...
といった形で任意の値が渡される文字列です。例えば以下のような文字列です。
http://ohke.hateblo.jp/search?q=Python&page=1504879200
LINQで文字列を連結することもできますが、' '(スペース)や'&'(アンパサンド)などの特殊記号をエスケープする必要があったりするため、自前での実装は避けたほうがいいです。
かわりにSystem.Web.HttpUtility.ParseQueryString.aspx)メソッドを使うと、安全かつ容易にクエリストリングを生成できます。
- ' 'や'&'などはパーセントエンコーディングされています
var query = System.Web.HttpUtility.ParseQueryString(""); query.Add("name", "Tanaka, Ichiro"); query.Add("childs", "jiro&saburo"); var queryString = query.ToString(); Console.WriteLine(queryString); // name=Tanaka%2c+Ichiro&childs=jiro%26saburo
生成されたクエリストリングをSystem.UriBuilder.aspx)クラスに渡せば、URIも一発生成できます。
var uriBuilder = new System.UriBuilder("example.host.name") { Query = query.ToString() }; Console.WriteLine(uriBuilder.Uri); // http://example.host.name/?name=Tanaka%2c+Ichiro&childs=jiro%26saburo