2011-09-25 245 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写这个。