• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

работа с System.net

  • Автор темы Young Programmer
  • Дата начала
Y

Young Programmer

Уважаемые программисты! Прошу помочь со следующей проблемкой. Приведу код чтобы было нагляднее
Код:
using System;
using System.Net;
using System.IO;

class NetDemo {
public static void Main() {
int ch;

HttpWebRequest req=(HttpWebRequest) WebRequest.Create("http://bankreferatov.ru");
HttpWebResponse resp=(HttpWebResponse) req.GetResponse();

Stream istrm=resp.GetResponseStream();

StreamWriter strw=new StreamWriter("list.html");

for (int i=1;;i++) {
ch=istrm.ReadByte();
strw.Write((char)ch);
Console.Write((char)ch);
if (ch==-1) break;


if ((i%400)==0) {Console.WriteLine("\nНажмите клавишу"); Console.Read();}

}

strw.Close();
resp.Close();
}
}
Модератор: код читается лучше, если он оформлен, соответственно!

Программа не сложная, отображает гипертекст какого-нибудь адреса, выводит его на консоль и в файл. Так вот, на русскоязычных сайтах текст, встречающийся на сайте отображается в виде иероглифов. Хотелось бы исправить, но не знаю в чем проблема. С англоязычными сайтами отображается все нормально. Подскажите пожалуйста. что нужно сделать для корректного отображения
 
P

Pasha

Для: Young Programmer
Читай сразу все содержимое ответа в byte[], потом прогоняй его через Encoding.GetEncoding(1251).GetString(...);
 
Y

Young Programmer

Для Pasha:

Большое спасибо!!! Действительно, заработало. Только еще вопрос, Вы посоветовали читать содержимое сразу в byte[]. Я читал в BinaryReader а оттуда уже побайтно заливал в byte[]. Может вы имели ввиду как-то напрямую считывать в массив byte[]? Если да, то приведите пожалуйста строку, как это организовать.
 
P

Pasha

Для: Young Programmer
Что-то вроде:
Код:
byte[] buffer = new byte[resp.ContentLength];
int bytesRead = istrm.Read(buffer, 0, buffer.Length);
Но лучше вот так:
Код:
StreamReader readStream = new StreamReader (receiveStream, GetEncoding(1251));
string content = readStream.ReadToEnd ();
readStream.Close();
resp.Close();
 
Y

Young Programmer

Спасибо! Пользовался первым вариантом. Пожже заценю второй. :)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!