【发布时间】:2016-03-21 14:55:33
【问题描述】:
我使用 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 库
【问题讨论】:
-
第二个 URL 是代表第一个 URL 的完全合法的方式。听起来,如果有的话,接收请求的服务在正确编码的 URL 方面存在问题。
-
@CSharpie:我理解 URL 编码的意义,但是(特别是)方括号的意外编码是我感到困惑的地方。特别是因为相同的代码在另一个项目中的工作方式不同。
-
@JLRishe:不幸的是,服务对第一个请求的响应很好,但对第二个请求“没有结果”。我认为这与他们的应用程序从 URL 解析搜索参数的方式有关。
-
您是否尝试过添加类似this 答案建议的帖子参数?
标签: c# asp.net-mvc-4 dotnet-httpclient system.net.httpwebrequest