Всем здравствуйте!
Я новичок в С#, пытаюсь парсить нужные мне страницы в интернете. Парсер пишу в Visual Studio 2015. Столкнулся с такой проблемой: при попытке получить нужную мне страницу через прокси получаю вместо страницы следующий текст:
package ru.sbogomolov.template;
public class servletBase extends HttpServleterror: java.lang.NullPointerException
Причём только при попытке получить только определённый класс страниц. Любые другие страницы сайта получаю нормально. Может ли это быть защитой от автоматического чтения страниц? И как такое можно обойти? Причём проверял, запрашиваемая мной страница на сайте есть.
Используемый код:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://id.npfte.ru/identDeclDrug/main?act=submit&countryE=countryE_RU&codeCD=codeCD_%D0%A4%D0%9C01&CodeSybbol=CodeSybbol_%D0%94&shortNum=54904&DateTypeSearch=beginDate&day=day_26&mount=mount_11&year=year_2014");
WebProxy myproxy = new WebProxy(textBox1.Text, Convert.ToInt32(textBox2.Text));
req.Proxy = myproxy;
req.Timeout = 50000; //установили таймаут (ожидаем 30 секунд ответа на запрос)
try
{
System.Diagnostics.Stopwatch swatch = new System.Diagnostics.Stopwatch(); // создаем объект
swatch.Start(); // старт замера времени
//из ответа получаем входной поток
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
swatch.Stop(); // стоп замера времени
MessageBoxButton buttOk = MessageBoxButton.OK;
MessageBox.Show("Время вычисления = " + swatch.ElapsedMilliseconds / 1000.0, "Уведомление", buttOk);
StreamReader istrm = new StreamReader(resp.GetResponseStream(), Encoding.GetEncoding(1251));
//resp.Close();
for (int i = 1; ; i++)
{
ch = istrm.Read();
if (ch == -1) break;
if (ch == 10) //перенос строки
{
textBox.Text = textBox.Text + textBuffer + Environment.NewLine;
textBuffer = "";
}
textBuffer = textBuffer + (char)ch;
}
textBox.Text = textBox.Text + textBuffer;
MessageBox.Show("Конец!", "Уведомление", buttOk);
//закрываем поток, содержащий ответ. При этом автоматически закроется и входной поток istrm
resp.Close();
}
catch (System.Net.WebException ex)
{
MessageBoxButton buttOk = MessageBoxButton.OK; //Не удалось подключиться к прокси! :(
MessageBox.Show(ex.Message + textBox1.Text + Convert.ToInt32(textBox2.Text), "Ошибка", buttOk);
}
}