Проблема в том, что вы интерпретируете двоичные данные как текст, даже если это не так - как только вы начинаете обрабатывать контент как строку вместо байтов, у вас возникают проблемы. Вы не указали детали своего класса-оболочки, но я предполагаю, что ваше свойство Content
возвращает строку - вы не сможете использовать это. Если ваш класс-обертка не позволяет вам получать необработанные данные из веб-ответа, вам необходимо изменить его.
Если вы используете .NET 4, вы можете использовать новый метод CopyTo:
using (Stream output = File.OpenWrite("file.dat"))
using (Stream input = http.Response.GetResponseStream())
{
input.CopyTo(output);
}
Если вы не используете .NET 4, вам необходимо выполнить копирование вручную:
using (Stream output = File.OpenWrite("file.dat"))
using (Stream input = http.Response.GetResponseStream())
{
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, bytesRead);
}
}