StreamReader streamReader = new StreamReader(stream, encoding);
StreamReader
- это TextReader , который считывает символы из потока байтов в определенной кодировке.
StreamReader предназначен для персонажа
ввод в конкретной кодировке,
тогда как класс Stream разработан
для байтового ввода и вывода. использование
StreamReader для чтения строк
информация из стандартного текстового файла.
В вашем случае вы получаете необработанные байты - вам нужно либо напрямую работать с Stream
, либо использовать BinaryReader
или абстракцию более высокого уровня.
byte[] buffer = Convert.FromBase64String(responseBody);
Поток, который вы получаете, не закодирован в base64 - это чистый поток байтов изображения, так что просто назначьте байты напрямую, проще всего было бы с WebClient
:
using(WebClient wc = new WebClient())
byte[] buffer = wc.DownloadData("http://www.waterfootprint.org/images/gallery/original/apple.jpg");
Кодировка Base 64 обычно используется, когда необходимо передать двоичные данные в виде текста ASCII (т.е. как часть элемента XML CData или SOAP в целом) - но не если вы хотите передать двоичный файл ( т.е. изображение) через HTTP.