小编典典

为 System.Net.HttpClient 构建查询字符串

all

如果我想使用 System.Net.HttpClient 提交 http get 请求,似乎没有 api 来添加参数,这是正确的吗?

是否有任何简单的 api 可用于构建不涉及构建名称值集合和 url 编码的查询字符串,然后最终将它们连接起来?我希望使用类似 RestSharp 的
API(即 AddParameter(..))


阅读 87

收藏
2022-06-02

共1个答案

小编典典

如果我想使用 System.Net.HttpClient 提交 http get 请求,似乎没有 api 来添加参数,这是正确的吗?

是的。

是否有任何简单的 api 可用于构建不涉及构建名称值集合和 url 编码的查询字符串,然后最终将它们连接起来?

当然:

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方法。

2022-06-02