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

Dar*_*rko 0 c# io stream httpwebrequest

我正在尝试获取请求并阅读它:

byte[] buffer;
Stream read = http.GetResponseStream();
string readIt = read.Read(buffer, 0, read.Length)
Run Code Online (Sandbox Code Playgroud)

但它会引发无效参数的错误.

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

Guf*_*ffa 5

那是因为你还没有创建你尝试使用的字节数组.

byte[] buffer = new byte[read.Length];
Run Code Online (Sandbox Code Playgroud)

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

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

此外,这非常重要,您必须使用方法的返回值Read,因为它告诉您实际读取了多少字节.该Read方法不必返回您要求的所有字节,因此您必须循环,直到它返回零值,这意味着该流已被读取到结尾:

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
Run Code Online (Sandbox Code Playgroud)