Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Не могу прочитать данные с сайта


Автор: V0fka 19.6.2013, 11:46
Привет!

На сайте есть страница, которая генерирует xml. Хочу её прочитать и обработать. На сайте Майкрософта нашел пример кода, который просто считывает страницу. Делаю:

Код

            HttpWebRequest myWebRequest = (HttpWebRequest)WebRequest.Create("http://www.microsoft.com/");
            WebProxy myProxy = new WebProxy();
            string proxyAddress = "http://proxy.name:3128";

            string username = "user";
            string password = "password";

            Uri newUri = new Uri(proxyAddress);
            myProxy.Address = newUri;
            myProxy.Credentials = new NetworkCredential(username, password);
            myWebRequest.Proxy = myProxy;
            myProxy.Credentials = new NetworkCredential(username, password);
            myWebRequest.Proxy = myProxy;

            try
            {
                HttpWebResponse myWebResponse = (HttpWebResponse)myWebRequest.GetResponse();
            }
            catch (Exception exeption)
            {

            }


В результате попадаю в исключение и имею такое описание ошибки:

Цитата
System.Net.WebException: Невозможно соединиться с удаленным сервером ---> System.Net.Sockets.SocketException: Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера [тут был IP прокси сервера]:3128
   в System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
   в System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
   --- Конец трассировки внутреннего стека исключений ---
   в System.Net.HttpWebRequest.GetResponse()
   в NewsReader.Form1.button1_Click(Object sender, EventArgs e) в c:\Users\..\Documents\Visual Studio 2012\Projects\NewsReader\NewsReader\Form1.cs 


Подскажите, что за беда?

Автор: jonie 19.6.2013, 23:06
firewall проверь?
А еще можно взят сниффер и посмотреть что происходит, также можно включить трассировку сети в app.config-е нечто вроде:
Код

<configuration>

<system.diagnostics>

<sources>
  <source name="System.Net.Sockets" tracemode="includehex">
    <listeners>
      <add name="System.Net.Sockets" type="System.Diagnostics.TextWriterTraceListener" initializeData="network.log" />
    </listeners>
  </source>
</sources>

<switches>
  <add name="System.Net.Sockets" value="Verbose"/>
</switches>

<trace autoflush="true" />
</system.diagnostics>
</configuration>

Автор: V0fka 20.6.2013, 11:17
Цитата(jonie @  19.6.2013,  23:06 Найти цитируемый пост)
firewall проверь?

Выключал - результат не изменился. Это ж может быть, что на прокси что-то уже блочит?

Цитата(jonie @  19.6.2013,  23:06 Найти цитируемый пост)
А еще можно взят сниффер и посмотреть что происходит

Поставил Wireshark. Но он отлавливает кучу всего и где мухи, где котлеты - непонятно (мне). Попробовал только хттп снифать, но туда оно не попадает. Хотя это, наверное и логично, т.к. до самого запроса и не доходит.

Цитата(jonie @  19.6.2013,  23:06 Найти цитируемый пост)
также можно включить трассировку сети в app.config-е нечто вроде:

Вставил подчеркивает и ругается на
<source name="System.Net.Sockets" tracemode="includehex">
Атрибут "tracemode" не разрешен. И вставлю я это все, например, что мне с этим потом делать? smile 

Автор: Fobos 20.6.2013, 13:51
а что там за адрес прокси? да и креденшелы тоже там не нужны. Не знаю что это за пример, но его надо почистить.
Вот эта строка думаю стопроцентно лишняя

Код

myWebRequest.Proxy = myProxy;

Автор: V0fka 20.6.2013, 21:01
Цитата(Fobos @  20.6.2013,  13:51 Найти цитируемый пост)
а что там за адрес прокси?

Реального прокси-сервера.

Цитата(Fobos @  20.6.2013,  13:51 Найти цитируемый пост)
да и креденшелы тоже там не нужны. Не знаю что это за пример, но его надо почистить.

Отсюда http://msdn.microsoft.com/ru-ru/library/system.net.httpwebrequest.proxy.aspx

Цитата(Fobos @  20.6.2013,  13:51 Найти цитируемый пост)
Вот эта строка думаю стопроцентно лишняя

Завтра проверю, спасибо!

Автор: V0fka 21.6.2013, 09:40
Цитата(Fobos @  20.6.2013,  13:51 Найти цитируемый пост)
Вот эта строка думаю стопроцентно лишняя

Лишняя smile  smile . Но в случае с сайтом Майкрософта - отрабатывает, а в случае с моим сайтом - всеравно ловлю исключение, другое правда smile :
Цитата
Удаленный сервер возвратил ошибку: (407) Требуется проверка подлинности посредника.

Подскажите ещё, пожалуйста, как это обойти.

Автор: V0fka 21.6.2013, 10:54
Проблему вроде удалось решить сделав это:

Код

myWebRequest.Proxy.Credentials = CredentialCache.DefaultCredentials;


jonie, Fobos, спасибо за ответы!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)