Использование GZip для сжатия текста веб-страницы - C#

Узнай цену своей работы

Формулировка задачи:

Добрый вечер! Прошу вашей помощи. Решения из похожих тем мне не помогли. Есть метод
Листинг программы
  1. public static string GetURL(string address)//получение текста со страницы
  2. {
  3. //using (var client = new MyWebClient())
  4. using (var client = new WebClient())
  5. {
  6. //WebClient берет Proxy из конфигурационных файлов Internet Explorer. Отключаем
  7. client.Proxy = null;
  8. client.Credentials = CredentialCache.DefaultNetworkCredentials;
  9. client.Encoding = Encoding.UTF8;
  10. client.Headers[HttpRequestHeader.AcceptEncoding] = "gzip";
  11. using (GZipStream responseStream = new GZipStream(client.OpenRead(address), CompressionMode.Decompress))
  12. {
  13. using (StreamReader reader = new StreamReader(responseStream))
  14. { return reader.ReadToEnd(); }
  15. }
  16. }
  17. }
Выдается следующая ошибка

Неправильное магическое число в заголовке GZip. Передача должна идти в поток GZip.

В чем дело, никак не могу понять. Ощущение, что в поток GZip ничего не попадает. Хотя, когда использую
Листинг программы
  1. client.DownloadString(address);
все парсит как надо.

Решение задачи: «Использование GZip для сжатия текста веб-страницы»

textual
Листинг программы
  1. class MyWebClient : WebClient
  2. {
  3.     protected override WebRequest GetWebRequest(Uri address)
  4.     {
  5.         WebRequest webReq = base.GetWebRequest(address);
  6.         HttpWebRequest httpReq = webReq as HttpWebRequest;
  7.         if (httpReq == null) return webReq;
  8.  
  9.         httpReq.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
  10.         return httpReq;
  11.     }
  12. }

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


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

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

7   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы