2013-07-04 57 views
0

我正在使用C#控制檯應用程序進行Web分析。無法下載特定網站的HTML

我的代碼是:

var req = WebRequest.Create("http://watch.squidtv.net/"); 
req.BeginGetResponse(r => 
{ 
    var response = req.EndGetResponse(r); 
    var stream = response.GetResponseStream(); 
    var reader = new StreamReader(stream, true); 
    var str = reader.ReadToEnd(); 
    Console.WriteLine(str); 
}, null); 

本規範乳寧精細的其他網址,但是當我改變的URL http://watch.squidtv.net/然後兩個問題確曾發生

第一一它沒有下載它的HTML。
第二個 - 它產生一個CPU的聲音。

然後,我改變了這樣的代碼,並使用Web客戶端 -

string htmlCode = ""; 
htmlCode = client.DownloadString("http://watch.squidtv.net"); 
Console.WriteLine(htmlCode); 

但問題是相同:(
什麼可以是問題???

+0

什麼它回來了嗎? –

+0

只是一些垃圾 – Nomi

回答

1

我發現瞭解決方案 的萬阿英,蔣達清在HTML標題HTML標題有gzip的對象編碼的HttpWebRequest不接受gzip的報頭引起問題時,我使用該代碼的問題就解決了

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://watch.squidtv.net/"); 
     req.Headers[HttpRequestHeader.AcceptEncoding] = "gzip, deflate"; 
     req.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; 
     req.Method = "GET"; 
     req.UserAgent = "Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))"; 
     string htmlCode; 
     using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream())) 
     { 
      htmlCode = reader.ReadToEnd(); 
     } 
0

也許你需要指定更多的是在你的WebRequest中,這樣SquidTV服務器就可以知道發回給你一個想法的HTML

想想看,在瀏覽器中有很多頭文件被髮送到服務器。 FiddlerWireShark查看發送的所有額外數據。

防火牆可能是另一個問題,因爲您發出的請求可能不被允許,因此沒有任何事情會回來。這將是我可能會建議像WireShark或Fiddler這樣的中間工具的地方,這些工具可能會有助於查看請求是否至少出局。

+0

它只是下載了兩次HTML,但後來又開始了同樣的問題 – Nomi