При запросе страницы с сжатием Gzip я получаю много из следующих ошибок:HttpWebRequest & Native GZip сжатие
System.IO.InvalidDataException: CRC в GZip сноска, не совпадает с CRC вычисляется из декомпрессированных данные
Я использую родной GZipStream для распаковки, и я рассматриваю это решение. Имея это в виду, есть ли работа для решения этой или другой библиотеки GZip (бесплатно?), Которая будет правильно обрабатывать эту проблему?
Я проверки WebResponse ContentEncoding является GZIP
Update 5/11 упрощенный Snippit
//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;
}
Является ли это для конкретного сайта, или это происходит из ответов везде? Если это единственный сайт, может быть, проблема лежит на другой стороне. – MichaelICE
Обратите внимание, что «deflate», в соответствии с спецификацией HTTP, действительно является «zlib» (который обертывает deflate), а не дефлируется вообще (это неправильное название). Из-за [этой путаницы] (http://en.wikipedia.org/wiki/Gzip#Derivatives_and_other_uses) некоторые серверы отправят дефлят, а другие zlib и клиенты должны поддерживать оба (по эвристической догадке) на всякий случай , Тьфу. – Cameron