2013-11-09 131 views
3

我遇到一個奇怪的問題與WebClient.DownloadString我似乎無法來解決,我的代碼:WebClient.DownloadString沒有返回數據

Dim client As New WebClient() 
Dim html = client.DownloadString("http://www.btctrade.com/") 

內容似乎並不完全AJAX,所以它不能那樣。這是因爲網頁是中文嗎?我猜HTML只是作爲HTML服務的,所以也不能那麼做。當我去它時,URL很好,而且似乎也沒有https重定向。

任何人都知道爲什麼會發生這種情況?

回答

1

您必須設置在Web客戶端頭cookie和用戶代理這個工程

client .Headers.Add(HttpRequestHeader.UserAgent, "UserAgent,Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1"); 
client .Headers.Add(HttpRequestHeader.Cookie, "USER_PW=9b1283bfe37ac47b243a1e0c9c1c9e52; PHPSESSID=f692406a0c84dba2605a7065d55a3b53") 

,如果ü希望該請求完成所有的工作,你必須對用戶的HttpWebRequest然後保存所有響應的頭部,並用它們一個新的請求

+1

謝謝!我現在試試看,非常感謝你的詳細回覆。 –

+1

這絕對是救了我 - 這是一種享受。非常感謝。 –

0

WebClient不是bug,所以可能服務器正在返回你沒有料到的數據。使用Fiddler觀看當您在網絡瀏覽器中訪問網站時會發生什麼。

當我執行你的代碼時,網站沒有返回任何數據。當我在網絡瀏覽器中訪問該網站時,它返回了數據。 也許,該網站正在檢測到您是機器人並拒絕您訪問。通過模仿你在提琴手中看到的東西來僞造瀏覽器。

+0

我已經做到了這一點,並看到內容似乎在檢查之前解碼(提琴手) - 即使這僅僅是一個噩夢,但你已經把我放在正確的道路上,所以我會接受您的回覆:) –

+0

該網站發送gzip內容。提琴手可以解碼它,以便您可以檢查它。 WebClient也可以自動解壓縮。 – usr

+0

對不起,這是正確的答案,但另一種解決方案完美地工作。 –