我使用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库
答案 0 :(得分:1)
请非常具体地说明您的问题:
原来你在.NET 4.0下编译,这是我要说的一个错误,因为行为与.NET Fx 4.5 System.Http
您可以通过在Uri类中将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);