Build query string for System.Net.HttpClient get Ask Question

Build query string for System.Net.HttpClient get Ask Question

System.Net.HttpClient を使用して http get 要求を送信したい場合、パラメータを追加するための API がないようですが、これは正しいですか?

名前と値のコレクションを構築し、それらを URL エンコードして最終的に連結する必要がない、クエリ文字列を構築するためのシンプルな API はありますか? RestSharp の API (つまり AddParameter(..)) のようなものを使いたいと思っていました。

ベストアンサー1

System.Net.HttpClient を使用して http get 要求を送信したい場合、パラメータを追加するための API がないようですが、これは正しいですか?

はい。

名前値のコレクションを構築し、それらを URL エンコードして最終的に連結する必要がない、クエリ文字列を構築するためのシンプルな API はありますか?

もちろん:

var query = HttpUtility.ParseQueryString(string.Empty);
query["foo"] = "bar<>&-baz";
query["bar"] = "bazinga";
string queryString = query.ToString();

期待通りの結果が得られます:

foo=bar%3c%3e%26-baz&bar=bazinga

このクラスは役に立つかもしれませんUriBuilder:

var builder = new UriBuilder("http://example.com");
builder.Port = -1;
var query = HttpUtility.ParseQueryString(builder.Query);
query["foo"] = "bar<>&-baz";
query["bar"] = "bazinga";
builder.Query = query.ToString();
string url = builder.ToString();

期待通りの結果が得られます:

http://example.com/?foo=bar%3c%3e%26-baz&bar=bazinga

これをメソッドに安全にフィードできますHttpClient.GetAsync

おすすめ記事