Это потому, что вы не создали байтовый массив, который пытаетесь использовать.
byte[] buffer = new byte[read.Length];
Обратите внимание, что вы должны проверить значение read.Length
, прежде чем использовать его.Длина ответа не всегда известна.
Кроме того, метод Read
возвращает также int
, а не 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