Странное поведение HttpWebRequest при использовании WebProxy - PullRequest
1 голос
/ 20 января 2011

У меня есть 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 содержит такое значение:

"\ Ь \ 0 \ 0 \ 0 \ 0 \ 0 \ 0] Rsy \ 0 \ Т.П. \"] ки ػ - X \ 0 \ f / ! HU > Cr P $% nR z g 3 t ~ q3 ٵ ȋ (M 14 & \ е?.? exj p.Yo | ӎuOO \ v]} ~ Е: Bl ן Ԙ6 + L 岳 Yy'ͧ ~ # 5ϩit25% рЕ Lt & x0: -2iC $ M_6zUtJ> C-GYkOR $ PT8 + *] HY \ "$ Ō�-�r�ʙ H3 \ f8JdQ (: Герр ܔ ڨ 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 у \ f7 <\», \ а / И.К. rҿ5;} Н + QIO] 8c Наг ڟ u2>

Ответы [ 2 ]

6 голосов
/ 20 января 2011

Так как вы проезжаете

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

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

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

1 голос
/ 18 октября 2011

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

...