Использование GZip для сжатия текста веб-страницы - C#
Формулировка задачи:
Добрый вечер! Прошу вашей помощи. Решения из похожих тем мне не помогли.
Есть метод
Выдается следующая ошибка
все парсит как надо.
public static string GetURL(string address)//получение текста со страницы
{
//using (var client = new MyWebClient())
using (var client = new WebClient())
{
//WebClient берет Proxy из конфигурационных файлов Internet Explorer. Отключаем
client.Proxy = null;
client.Credentials = CredentialCache.DefaultNetworkCredentials;
client.Encoding = Encoding.UTF8;
client.Headers[HttpRequestHeader.AcceptEncoding] = "gzip";
using (GZipStream responseStream = new GZipStream(client.OpenRead(address), CompressionMode.Decompress))
{
using (StreamReader reader = new StreamReader(responseStream))
{ return reader.ReadToEnd(); }
}
}
}Неправильное магическое число в заголовке GZip. Передача должна идти в поток GZip.
В чем дело, никак не могу понять. Ощущение, что в поток GZip ничего не попадает. Хотя, когда используюclient.DownloadString(address);
Решение задачи: «Использование GZip для сжатия текста веб-страницы»
textual
Листинг программы
class MyWebClient : WebClient
{
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest webReq = base.GetWebRequest(address);
HttpWebRequest httpReq = webReq as HttpWebRequest;
if (httpReq == null) return webReq;
httpReq.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
return httpReq;
}
}