生成 HTTP 查询字符串
什么是 HTTP 查询字符串 例如此 URL:https://example.com:80/query?key1=value2&key2=value2 对其拆解我们可以得到以下部分: https:协议 :// example.com:域名 :80:端口 /query:路径 ?key1=value2&key2=value2:参数(也称作查询字符串) 如何生成 HTTP 查询字符串 暴力拼接 略 System.Web.HttpUtility var query = HttpUtility.ParseQueryString(string.Empty); query["a+b"] = "a%b"; query["b"] = "2+1"; var queryString = query.ToString(); // a+b=a%25b&b=2%2b1 HttpUtility.ParseQueryString(string.Empty) 会返回一个空的NameValueCollection,你只需要往里面填充参数然后调用ToString()即可生成查询字符串 您不能使用 new NameValueCollection() 来达到同样的效果,因为 HttpUtility.ParseQueryString(string) 返回的实际是 HttpQSCollection 类型,该类型是 NameValueCollection 的派生类型且不对外公开,所以你也无法通过 new 关键字来创建 HttpQSCollection 类型 此方法生成的查询字符串只会转义 value 且不包含前导字符 ? Microsoft.AspNetCore.Http.QueryString 此方法仅适用于 SDK 为 Microsoft.NET.Sdk.Web 的项目 var queryString = QueryString.Create(new Dictionary<string, string?> { ["a+b"] = "a%b", ["b"] = "2+1", })....