[解決済み] C#でURLのクエリ文字列を作成するには?
2022-03-18 22:26:31
質問
コードからWebリソースを呼び出す際の一般的なタスクは、必要なすべてのパラメータを含むクエリ文字列を構築することです。ロケットサイエンスではありませんが、クエリ文字列の前に
&
が最初のパラメータでない場合、パラメータのエンコーディングなど。
それを行うためのコードは非常にシンプルですが、少し面倒です。
StringBuilder SB = new StringBuilder();
if (NeedsToAddParameter A)
{
SB.Append("A="); SB.Append(HttpUtility.UrlEncode("TheValueOfA"));
}
if (NeedsToAddParameter B)
{
if (SB.Length>0) SB.Append("&");
SB.Append("B="); SB.Append(HttpUtility.UrlEncode("TheValueOfB")); }
}
このような一般的なタスクは、よりエレガントで読みやすくするユーティリティクラスが存在すると期待されます。MSDNに目を通したところ、そのようなクラスは見つかりませんでしたが、そこで次のような疑問がわきました。
上記のことを行うための最もエレガントでクリーンな方法は何ですか?
解決方法は?
フードの下を見ると、QueryStringプロパティはNameValueCollectionになっています。私が同様のことを行ったとき、私は通常、シリアライズとデシリアライズに興味があったので、私の提案は、NameValueCollectionを構築して、それを渡すことです。
using System.Linq;
using System.Web;
using System.Collections.Specialized;
private string ToQueryString(NameValueCollection nvc)
{
var array = (
from key in nvc.AllKeys
from value in nvc.GetValues(key)
select string.Format(
"{0}={1}",
HttpUtility.UrlEncode(key),
HttpUtility.UrlEncode(value))
).ToArray();
return "?" + string.Join("&", array);
}
LINQでこれを行うには、超エレガントな方法もあるのでしょうね...。
関連
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] ブラウザによって異なるURLの最大長とは?
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] URI、URL、URNの違いは何ですか?
-
[解決済み] enumを列挙するには
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] ページを再読み込みせずにURLを変更するにはどうすればよいですか?
-
[解決済み] JavaScriptでクエリ文字列の値を取得するにはどうすればよいですか?
-
[解決済み] JavaScriptでURLをエンコードする?
-
[解決済み] Node.js上のExpress.jsでGET(クエリ文字列)変数を取得する方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み] 関数を終了するには?
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み】System.Net.HttpClientのget用クエリ文字列の構築
-
[解決済み] Server.UrlEncode vs. HttpUtility.UrlEncode