我已经查看了很多关于这个主题的问答,并且到了我使用以下代码从给定 URI 获取字节的地步:
var request = (HttpWebRequest)WebRequest.Create(uri);
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
var response = request.GetResponse();
var stream = response.GetResponseStream();
if (stream != null)
{
var buffer = new byte[4097];
var memoryStream = new MemoryStream();
do
{
var count = stream.Read(buffer, 0, buffer.Length);
memoryStream.Write(buffer, 0, count);
if (count == 0)
break;
} while (true);
return memoryStream.ToArray();
}
response.Close();
return null;
现在,对于某个 URI(指向一个文件),在调试时,我看到 Web 响应的“Content-Encoding”标头等于空(“”),但是当尝试从流中读取时,它抛出异常:
System.IO.InvalidDataException:GZip 标头中的幻数不正确。确保您传入的是 GZip 流。
在开发工具中调试相同的 URI 时,我在响应标头上得到了这个:
内容编码:gzip、deflate
所以我真的不知道会发生什么。
关于如何避免此异常并成功读取文件字节的任何线索和想法?
谢谢!