Использование 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; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д