C# HttpClient使用gzip自动压缩,而不是压缩
使用和(看起来是同一个服务),我能够成功地通过它们的测试端点获得gzip响应,如下所示:C# HttpClient使用gzip自动压缩,而不是压缩,c#,postman,dotnet-httpclient,deflate,deflatestream,C#,Postman,Dotnet Httpclient,Deflate,Deflatestream,使用和(看起来是同一个服务),我能够成功地通过它们的测试端点获得gzip响应,如下所示: var cli = new HttpClient(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip }); await cli.GetAsync("https://postman-echo.com/gzip"); 但如果我对他们的泄气测试端点做了相同的操作: var cli = new HttpCl
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
我可以在.NETCore和.NETFramework中重新编程。请注意,这两个选项在浏览器中都可以正常工作:
人们很容易认为这是测试服务的一个缺陷,但由于浏览器处理得很好,其他平台上的库也一样(他们的测试套件很广泛,但他们不是.NET的人),我真的不确定该用哪种方式来指责。这个异常到底告诉了我什么?不知道它是否仍然相关,但这确实是一个在.net中的异常,最近才出现在.net 6中。尝试手动将
内容编码
头添加到您的请求中,以验证是哪一方导致了问题。谢谢。我想你的意思是在请求时接受编码,对吗?我确实试过了,但没什么不同,可能应该提到。是的,我的意思是接受编码
如果您已经尝试过,请尝试另一个在.NET上测试的测试repo。我很乐意尝试不同的测试服务,但我不知道有什么。