通过stream.read读取流,而不是使用StreamReader



我正在尝试获取一个请求,并将其读取为:

byte[] buffer;
Stream read = http.GetResponseStream();
string readIt = read.Read(buffer, 0, read.Length)

但它抛出了一个带有无效参数的错误。

知道如何在使用Stream而不是StreamReader时获得对字符串的响应吗?

这是因为您还没有创建要使用的字节数组。

byte[] buffer = new byte[read.Length];

请注意,在使用read.Length之前,您应该检查它的值。响应长度并不总是已知的。

此外,Read方法返回int,而不是string

此外,这一点非常重要,您必须使用Read方法的返回值,因为它"告诉"您实际读取了多少字节。Read方法不必返回您要求的所有字节,所以您必须循环,直到它返回值0,这意味着流已经被读取到最后:

int offset = 0, len;
do {
  len = read.Read(buffer, offset, read.Length - offset);
  offset += len;
} while (len > 0);
// now offset contains the number of bytes read into the buffer

相关内容

  • 没有找到相关文章

最新更新