我看到很多例子,但它們都一次慢慢讀入字節數組或256個字符。爲什麼?如何將WebResponse.GetResponseStream轉換爲字符串?
是不是建議只將結果Stream
值轉換爲一個字符串,我可以解析它?
我看到很多例子,但它們都一次慢慢讀入字節數組或256個字符。爲什麼?如何將WebResponse.GetResponseStream轉換爲字符串?
是不是建議只將結果Stream
值轉換爲一個字符串,我可以解析它?
您應該在流的周圍創建一個StreamReader
,然後調用ReadToEnd
。
您應該考慮改爲撥打WebClient.DownloadString
。
您可以使用StreamReader.ReadToEnd()
,
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
您可以創建流周圍StreamReader
,然後調用StreamReader.ReadToEnd()
。
StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream());
var responseData = responseReader.ReadToEnd();
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();
}
這應該是被接受的答案。 –
Richard Schneider是對的。 使用下面的代碼從網站獲取數據,這是不UTF8字符集將得到錯誤的字符串。
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
「 我不能vote.so寫這個。
感謝SLaks,現在正在檢查DownloadString。其實我比我老的應用程序在那裏使用browser.DocumentStream使用的WinForms gettng不同的源代碼串瀏覽器控制,你認爲DownloadString會修復它嗎?如果它不那麼直接,我可以創建一個新的問題 –
你有一個編碼問題,或者你需要設置一個'User-Agent'。 – SLaks
感謝SLaks,我現在使用DownloadString,最好你是對的,現在結果略有不同,應該沒有什麼區別,但我得到的東西比如'