2011-01-20 5 views
1

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

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 \ 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]} ~ Е:? бл ן Ԙ6 + L 岳 Yy'ͧ ~ # 5ϩit2 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;} ч + QIO] 8cnAG ڟ u2>

ответ

6

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

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

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

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

+0

Perfect. Он работал, когда я удалил этот заголовок. Спасибо Сэму. – deadlock

+0

'HttpWebRequest' даже не поддерживает sdch. :) – bzlm

1

Просто используйте Gzip для его распаковки.

Смежные вопросы