C # webclient и прокси-сервер

Я использую class веб-клиента в своем исходном коде для загрузки строки с помощью http.

Это работало нормально. Тем не менее, клиенты в компании все подключены к прокси-серверу. И проблема началась с этого.

Когда я протестировал свое приложение, я не думаю, что он может проходить через прокси-сервер, поскольку исключение, которое продолжает получать, – это «нет ответа от xxx.xxx.xxx.xxx, который является IP-адресом прокси-сервера.

Тем не менее, я все же могу перейти к URL-адресу веб-сайта, и он правильно отображает строку в браузере при подключении через прокси-сервер, но не при использовании моего веб-клиента.

Есть ли что-то в веб-клиенте, которое я должен настроить, чтобы позволить мне получить доступ к URL-адресу из-за прокси-сервера?

using (WebClient wc = new WebClient()) { string strURL = "http://xxxxxxxxxxxxxxxxxxxxxxxx"; //Download only when the webclient is not busy. if (!wc.IsBusy) { string rtn_msg = string.Empty; try { rtn_msg = wc.DownloadString(new Uri(strURL)); return rtn_msg; } catch (WebException ex) { Console.Write(ex.Message); return false; } catch (Exception ex) { Console.Write(ex.Message); return false; } } else { System.Windows.Forms.MessageBox.Show("Busy please try again"); return false; } } 

Мое решение:

 WebClient client = new WebClient(); WebProxy wp = new WebProxy(" proxy server url here"); client.Proxy = wp; string str = client.DownloadString("http://www.google.com"); 

Если вам необходимо выполнить аутентификацию прокси-сервера, вам необходимо установить UseDefaultCredentials в false и установить Credentials прокси-сервера.

 WebProxy proxy = new WebProxy(); proxy.Address = new Uri("mywebproxyserver.com"); proxy.Credentials = new NetworkCredential("usernameHere", "pa****rdHere"); //These can be replaced by user input proxy.UseDefaultCredentials = false; proxy.BypassProxyOnLocal = false; //still use the proxy for local addresses WebClient client = new WebClient(); client.Proxy = proxy; string doc = client.DownloadString("http://www.google.com/"); 

Если все, что вам нужно, это простой прокси-сервер, вы пропускаете большинство строк выше. Все что тебе нужно это:

 WebProxy proxy = new WebProxy("mywebproxyserver.com"); 

Я столкнулся с той же проблемой, но с помощью веб-клиента для загрузки файла из Интернета с помощью приложения Winform, которое было добавлено в app.config:

    

Это же решение будет работать для приложения asp.net, вставляющего те же строки в web.config.

Надеюсь, это поможет.

Вам нужно настроить прокси-сервер в объекте WebClient.

См. Свойство WebClient.Proxy:

http://msdn.microsoft.com/en-us/library/system.net.webclient.proxy(VS.80).aspx

Ответ, предложенный Джонатаном, является правильным, но требует, чтобы вы указывали учетные данные прокси и url в коде. Как правило, лучше разрешить использование учетных данных как установку в системе по умолчанию (пользователи обычно настраивают параметры LAN в любом случае, если они используют прокси-сервер) …

Следующий ответ был предоставлен Davide в более раннем ответе, но для этого требуется изменить файлы app.config. Это решение, вероятно, более полезно, поскольку оно делает то же самое в коде.

Чтобы приложение могло использовать настройки прокси-сервера по умолчанию, используемые в системе пользователя, можно использовать следующий код:

 IWebProxy wp = WebRequest.DefaultWebProxy; wp.Credentials = CredentialCache.DefaultCredentials; wc.Proxy = wp; 

Это позволит использовать код приложения для использования прокси (с регистрационными учетными данными и настройками URL-адреса прокси-сервера) … Нет головных болей! 🙂

Надеюсь, это поможет будущим зрителям этой страницы решить их проблемы!

     байт [];
                 используя (WebClient client = новый WebClient ())
                 {
                   ICredentials cred;
                   cred = new NetworkCredential ("[email protected]", "mybestpassword");
                   client.Proxy = новый WebProxy ("192.168.0.1", 8000);
                   client.Credentials = cred;
                   string myurl = "http://mytestsite.com/source.jpg";
                   data = client.DownloadData (myUrl);
                }

           File.WriteAllBytes (@ "c: \ images \ target.jpg", данные);

  • Как изменить таймаут на объекте .NET WebClient
  • POSTing JSON для URL через WebClient в C #
  • ASP.NET-controller: asynchronous модуль или обработчик завершен, пока асинхронная операция все еще находится на рассмотрении
  • Использование CookieContainer с classом WebClient
  • Как получить строку json из url?
  • Как я могу программным образом удалить 2 ограничения соединения в WebClient
  • Какая разница между classами WebClient и HTTPWebRequest в .NET?
  • WebClient vs. HttpWebRequest / HttpWebResponse
  • Распаковка gzip-ответа от WebClient
  • Установите тайм-аут для webClient.DownloadFile ()
  • Как отправить данные на определенный URL-адрес с помощью WebClient в C #
  • Давайте будем гением компьютера.