2012-08-17 58 views
0
using (var client = new WebClient()) 
     { 
      client.DownloadFile(new Uri(@"http://www.bilyoner.com/iddaa/iddaa-liste"),path); 

     } 
    } 

我想下載html源代碼,但我得到「底層連接已關閉:連接意外關閉。」例外。 我嘗試了不同的網址,只是工作正常。不能下載HTML頁面源

+1

也許服務器只允許標準瀏覽器訪問其內容。設置標準瀏覽器的用戶代理可能有效。 – nunespascal 2012-08-17 09:42:49

回答

1

接受壓縮流的技巧。

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.bilyoner.com/iddaa/iddaa-liste"); 
req.UserAgent = "MOZILLA/5.0 (WINDOWS NT 6.1; WOW64) APPLEWEBKIT/537.1 (KHTML, LIKE GECKO) CHROME/21.0.1180.75 SAFARI/537.1"; 
req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; 
req.Headers.Add("Accept-Encoding", "gzip,deflate"); 

GZipStream zip = new GZipStream(req.GetResponse().GetResponseStream(), 
                 CompressionMode.Decompress); 
var reader = new StreamReader(zip); 
var page = reader.ReadToEnd(); 
+0

你是說服務器以壓縮格式和WebClient()提供文件。DownloadFile()不處理壓縮格式? – 2012-08-17 10:13:44

-2

參考使用的編程語言在這裏將會很有幫助。
你肯定@在

new Uri(@"http://www.bilyoner.com/iddaa/iddaa-liste") 

是正確的?
對於開發過程中的調試,創建對所有連接的引用總是有用的。即

myConnection = new Uri(@"http://www.bilyoner.com/iddaa/iddaa-liste"); 
client.DownloadFile(myConnection, path); 
+2

@只是使它成爲一個文字字符串(你的字符串可以是多行,你不需要轉義特殊字符anymores)。但在這個例子中,這是沒有必要的。沒錯,雖然:) – Flater 2012-08-17 09:59:31

+0

感謝您的低票。雖然我懷疑使用我提供的代碼會幫助OP,因爲它可能會在不同的線路上失敗 - 例如,如「nunespascal」和「L.B」所示,它可能是用戶代理或壓縮問題。 – 2012-08-17 10:17:35

+0

我沒有downvote。當我評論時,你是在0.我同意使用額外的變量進行調試。我確實傾向於在確認代碼正確後刪除那些代碼。 – Flater 2012-08-17 10:26:31