使用 httpbin 和 Postman Echo(它们似乎是同一个服务),我可以成功地获取其测试终端的gzip响应,如下所示:
var cli = new HttpClient(new HttpClientHandler
{
AutomaticDecompression = DecompressionMethods.GZip
});
await cli.GetAsync("https://postman-echo.com/gzip");
但是如果我在他们的压缩测试端点上执行相同的操作:
var cli = new HttpClient(new HttpClientHandler
{
AutomaticDecompression = DecompressionMethods.Deflate
});
await cli.GetAsync("https://postman-echo.com/deflate");
我从System.Net.Http.HttpContent.LoadIntoBufferAsync
中得到以下异常/内部异常:
----> System.Net.Http.HttpRequestException : Error while copying content to a stream.
----> System.IO.IOException : The read operation failed, see inner exception.
----> System.Net.Http.WinHttpException : Operation aborted
我可以在.NET Core和.NET Framework中复现。请注意,这两者在浏览器中都可以正常工作:
这很容易让人想到这是测试服务的一个错误,但由于浏览器可以很好地处理它,其他平台上的库也能够(他们的测试套件非常全面,但他们不是.NET开发者),我真的不确定应该指向哪个方向。这个异常告诉我的确切信息是什么?
Accept-encoding
,对吗?我确实尝试过了,但没有任何区别,可能应该提一下。 - Todd MenierAccept-Encoding
。 - iSR5