0

我使用 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

知道为什么吗?谢谢

注意我在 .NET Framework 4.5 中使用来自 Nuget 的 Microsoft.Net.Http 库

4

1 回答 1

2
  1. 请对您的问题非常具体:

    • 你用的Microsoft.Net.Http 版本是什么?
    • 你在.NET 版本下编译什么?
  2. 原来你是在 .NET 4.0 下编译的,我想说这是一个错误,因为行为与 .NET Fx 4.5 System.Http 不同

dontEscape您可以通过在 Uri 类中设置为 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);
于 2016-03-21T16:15:07.803 回答