Использование 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;
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы