小编典典

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

c#

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

是否有任何简单的API可以用来构建查询字符串,而无需构建名称值集合并对其进行url编码,然后最终将它们串联起来?我希望使用类似RestSharp的api的东西(即AddParameter(..))


阅读 263

收藏
2020-05-19

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

2020-05-19