【发布时间】:2017-06-21 21:00:54
【问题描述】:
最近我一直在尝试使用 HttpClient 类,我遇到了一些奇怪的行为:.NET Core 1.1 上的 HttpClient 使用 gzip 和 deflate 自动解压缩响应内容,但 .NET Framework 4.6 上的 HttpClient .2 不是。这是我正在使用的代码:
string url = "http://www.youtube.com";
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.TryAddWithoutValidation("accept-encoding", "gzip, deflate");
var response = await client.GetAsync(url);
Console.WriteLine(await response.Content.ReadAsStringAsync());
Console.Read();
如果此代码在 .NET Framework 上运行,则输出为乱码(预期),但如果在 .NET Core 上运行,则输出为可读的 HTML。
我发现这一点的方法是将上述代码包含在 .NET 标准项目中,然后从 .NET Framework 控制台应用程序和 .NET Core 控制台应用程序中引用它。
据我所知,HttpClient 类通常没有很好的文档,那么哪种行为是正确的?
这是对 .NET Standard 库的潜在重大更改,但似乎 .NET Standard 不能保证这样的默认值,所以这是一个错误还是轻微的平台不一致?
谢谢
【问题讨论】:
-
stackoverflow.com/a/27327208/34092 在 .NET 4.6.2 和 Core 1.1 中都可以使用吗?您是否有理由希望不解压缩数据?
标签: c# .net .net-core dotnet-httpclient