Странное поведение HttpWebRequest при использовании WebProxy

У меня есть HttpWebRequest с StreamReader, который отлично работает без использования WebProxy. Когда я использую WebProxy, StreamReader читает странный символ вместо фактического html. Вот код.

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://URL");
req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10";
req.Accept = "application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
req.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3");
req.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
req.Headers.Add("Accept-Language", "en-US,en;q=0.8");
req.Method = "GET";
req.CookieContainer = new CookieContainer();

WebProxy proxy = new WebProxy("proxyIP:proxyPort");
proxy.Credentials = new NetworkCredential("proxyUser", "proxyPass");
req.Proxy = this.proxy;
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
StreamReader reader = new StreamReader(res.GetResponseStream());
string html = reader.ReadToEnd();

Без использования WebProxy переменная html содержит ожидаемую строку html из URL-адреса. Но с WebProxy html имеет такое значение:

"�\b\0\0\0\0\0\0��]r����s�Y����\0\tP\"]ki���ػ��-� �X�\0\f���/�!�HU���>Cr���P$%�nR�� z�g��3�t�~q3�ٵȋ(M���14&? \r�d:�ex�j��p������.��Y��o�|��ӎu�OO.�����\v]?}�~� ������E:�b��Lן�Ԙ6+�l���岳�Y��y'ͧ��~#5ϩ�it�2��5��%�p��E�L� ����t&x0:-�2��i�C���$M��_6��zU�tJ�>C-��GY��k�O�R$�P�T��8+� *]HY\"����$Ō�-�r�ʙ�H3\f8Jd���Q(:�G�E���r���R����ڨ�����W�‹]$��� �i>8\b�p� �\= 4\f�> �&��$��\v��C��C�vC��x�p�|\"b9�ʤ �\r%i��w@��\t�r�M�� �����!�G�jP�8.D�k�Xʹt�J��/\v!�r��y \f7‹����\",\a�/IK���ۚ�r�����ҿ5�;���}h��+Q��IO]�8��c��� �n�AGڟu2>�


person deadlock    schedule 20.01.2011    source источник


Ответы (2)


Поскольку вы проходите

req.Headers.Add("Accept-Encoding", "gzip,deflate,sdch"); 

Я бы сказал, что ваш прокси-сервер сжимает поток, прежде чем отправить его вам.

Просмотрите заголовки ответа, чтобы проверить кодировку.

person Sam B    schedule 20.01.2011
comment
HttpWebRequest даже не поддерживает sdch. :) - person bzlm; 15.02.2012

Просто используйте Gzip, чтобы распаковать его.

person sohaib    schedule 18.10.2011