为什么 System.Net.Http HttpClient 对我的请求进行编码 URL?
Why is System.Net.Http HttpClient encoding my request URL?
我使用 System.Net.Http 中的 HttpClient 向 Web 服务发出如下请求:
using (var client = new HttpClient())
{
using (var response = client.GetAsync(url).Result)
{
var result = response.Content.ReadAsStringAsync().Result;
}
}
我有一个沙盒应用程序和一个实时应用程序。沙盒应用程序具有相同的代码(在共享存储库中)工作正常,但是当在实时应用程序中调用 client.GetAsync(url).Result
时,出于某种原因,Fiddler 向我显示请求的 URL 已被编码,这会弄乱请求起来。
请求的 URL 应该是这样的:
/advert?paginate=1&page=1&language=en&filters[updated_at][ge]=2016-03-21%2012:19:05
但最终看起来像这样:
/advert?paginate=1&page=1&language=en&filters%5Bupdated_at%5D%5Bge%5D=2016-03-21%2012:19:05
知道为什么吗?谢谢
N.B。我在 .NET Framework 4.5
中使用来自 Nuget 的 Microsoft.Net.Http 库
请详细说明您的问题:
- 你用的Microsoft.Net.Http版本是什么?
- 你在.NET版本下编译什么?
原来你是在 .NET 4.0 下编译的,我想说这是一个错误,因为行为与 .NET Fx 4.5 不一样 System.Http
您可以通过在 Uri class:
中将 dontEscape
设置为 true 来修复它
var url = new Uri(@"http://google.com/advert?paginate=1&page=1&language=en&filters[updated_at][ge]=2016-03-21%2012:19:05", dontEscape: true);
我使用 System.Net.Http 中的 HttpClient 向 Web 服务发出如下请求:
using (var client = new HttpClient())
{
using (var response = client.GetAsync(url).Result)
{
var result = response.Content.ReadAsStringAsync().Result;
}
}
我有一个沙盒应用程序和一个实时应用程序。沙盒应用程序具有相同的代码(在共享存储库中)工作正常,但是当在实时应用程序中调用 client.GetAsync(url).Result
时,出于某种原因,Fiddler 向我显示请求的 URL 已被编码,这会弄乱请求起来。
请求的 URL 应该是这样的:
/advert?paginate=1&page=1&language=en&filters[updated_at][ge]=2016-03-21%2012:19:05
但最终看起来像这样:
/advert?paginate=1&page=1&language=en&filters%5Bupdated_at%5D%5Bge%5D=2016-03-21%2012:19:05
知道为什么吗?谢谢
N.B。我在 .NET Framework 4.5
中使用来自 Nuget 的 Microsoft.Net.Http 库请详细说明您的问题:
- 你用的Microsoft.Net.Http版本是什么?
- 你在.NET版本下编译什么?
原来你是在 .NET 4.0 下编译的,我想说这是一个错误,因为行为与 .NET Fx 4.5 不一样 System.Http
您可以通过在 Uri class:
中将dontEscape
设置为 true 来修复它
var url = new Uri(@"http://google.com/advert?paginate=1&page=1&language=en&filters[updated_at][ge]=2016-03-21%2012:19:05", dontEscape: true);