如何转换WebResponse.GetResponseStream返回一个字符串

本文关键字:一个 字符串 返回 WebResponse 何转换 转换 GetResponseStream | 更新日期: 2023-09-27 18:09:30

我看过很多例子,但它们都是缓慢地将它们读入字节数组或一次256个字符。为什么?

是不可取的,只是将结果Stream值转换成一个字符串,我可以解析它?

如何转换WebResponse.GetResponseStream返回一个字符串

您可以使用StreamReader.ReadToEnd()

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

您应该在流周围创建一个StreamReader,然后调用ReadToEnd

你应该考虑调用WebClient.DownloadString

正如@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();
}

"我不能投票。所以写了这个

您可以在流周围创建一个StreamReader,然后调用StreamReader.ReadToEnd()

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