当请求使用 Gzip 压缩的页面时,我收到很多以下错误:
System.IO.InvalidDataException:
GZip 页脚中的 CRC 与
根据解压后计算出的CRC
数据
我正在使用本机 GZipStream 来解压缩,并正在考虑解决这个问题。考虑到这一点,是否有解决此问题或另一个 GZip 库(免费?)的解决方法,可以正确处理此问题?
我正在验证 webResponse ContentEncoding 是 GZIP
更新 5/11简化的片段
//Caller
public void SOSampleGet(string url)
{
// Initialize the WebRequest.
webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = WebRequestMethods.Http.Get;
webRequest.KeepAlive = true;
webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
webRequest.Headers.Add("Accept-Encoding", "gzip,deflate");
webRequest.Referer = WebUtil.GetDomain(url);
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
using (Stream stream = GetStreamForResponse(webResponse, READTIMEOUT_CONST))
{
//use stream
}
}
//Method
private static Stream GetStreamForResponse(HttpWebResponse webResponse, int readTimeOut)
{
Stream stream;
switch (webResponse.ContentEncoding.ToUpperInvariant())
{
case "GZIP":
stream = new GZipStream(webResponse.GetResponseStream(), CompressionMode.Decompress);
break;
case "DEFLATE":
stream = new DeflateStream(webResponse.GetResponseStream(), CompressionMode.Decompress);
break;
default:
stream = webResponse.GetResponseStream();
stream.ReadTimeout = readTimeOut;
break;
}
return stream;
}
自 .net 2 起可用的 webrequest 自动解压缩属性怎么样?只需添加:
webRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
它还将 gzip,deflate 添加到接受编码标头中。
See http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.automaticdecompression.aspx http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.automaticdecompression.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)