我看到很多例子,但它们都一次慢慢读入字节数组或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,最好你是对的,现在结果略有不同,应该没有什么区别,但我得到的东西比如'