HttpClient AutomaticDecompression работает с gzip, а не с deflate - PullRequest
2 голосов
/ 11 октября 2019

Используя оба httpbin и Postman Echo (которые, по сути, являются одной и той же службой), я могу успешно получить ответ gzip'd с их конечной точкой тестирования, такой какэто:

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. Обратите внимание, что оба они отлично работают в браузере:

https://postman -echo.com / gzip

https://postman -echo.com / deflate

Соблазнительно думать, что это ошибка службы тестирования, но поскольку браузеры справляются с ней хорошо, как и библиотеки на других платформах (их набор тестов обширный, но они не .NET, ребята)Я действительно не уверен, какой путь указывать пальцем. Что именно говорит это исключение?

...