Почему бы вам не использовать WebClient.DownloadData
или WebClient.DownloadFile
вместо?
WebClient client = new WebClient();
client.Credentials = new NetworkCredentials("id", "pass");
client.DownloadFile(remoteUrl, localFile);
Кстати, правильный способ скопировать поток в другой - это не то, что вы сделали. Вы вообще не должны читать char[]
, так как при загрузке двоичного файла вы можете столкнуться с проблемами кодирования и конца строки. Вызов метода WriteLine
также проблематичен. Правильный способ скопировать содержимое потока в другой:
void CopyStream(Stream destination, Stream source) {
int count;
byte[] buffer = new byte[BUFFER_SIZE];
while( (count = source.Read(buffer, 0, buffer.Length)) > 0)
destination.Write(buffer, 0, count);
}
Класс WebClient
гораздо проще в использовании, и я предлагаю использовать его вместо этого.