2011-09-25 241 views

回答

57

您應該在流的周圍創建一個StreamReader,然後調用ReadToEnd

您應該考慮改爲撥打WebClient.DownloadString

+1

感謝SLaks,現在正在檢查DownloadString。其實我比我老的應用程序在那裏使用browser.DocumentStream使用的WinForms gettng不同的源代碼串瀏覽器控制,你認爲DownloadString會修復它嗎?如果它不那麼直接,我可以創建一個新的問題 –

+5

你有一個編碼問題,或者你需要設置一個'User-Agent'。 – SLaks

+0

感謝SLaks,我現在使用DownloadString,最好你是對的,現在結果略有不同,應該沒有什麼區別,但我得到的東西比如'

2

您可以創建流周圍StreamReader,然後調用StreamReader.ReadToEnd()

StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream()); 
var responseData = responseReader.ReadToEnd(); 
4

As @Heinzi提到應該使用響應的字符集。

var encoding = response.CharacterSet == "" 
    ? Encoding.UTF8 
    : Encoding.GetEncoding(response.CharacterSet); 

using (var stream = response.GetResponseStream()) 
{ 
    var reader = new StreamReader(stream, encoding); 
    var responseString = reader.ReadToEnd(); 
} 
+0

這應該是被接受的答案。 –

3

Richard Schneider是對的。 使用下面的代碼從網站獲取數據,這是不UTF8字符集將得到錯誤的字符串。

using (Stream stream = response.GetResponseStream()) 
{ 
    StreamReader reader = new StreamReader(stream, Encoding.UTF8); 
    String responseString = reader.ReadToEnd(); 
} 

「 我不能vote.so寫這個。