'407 Proxy Authentication Required'

by Felipe Lambert 12. August 2009 08:38

O erro acima é diretamente encontrado quando se precisa da execução de uma chamada a internet via código dentro de uma rede que necessita de proxy como ocorreu comigo ontem.

Então vamos a solução Suponhamos que uma aplicação em C# com o seguinte código.

WebClient client = new WebClient();
Stream rssStream = client.OpenRead(Url); 
StreamReader textReader = new StreamReader(rssStream);
XmlTextReader xmlReader = new XmlTextReader(textReader);
XmlDocument xmlDoc= new XmlDocument();
xmlDoc.Load(xmlReader);

E a aplicação retorne o seguinte erro em Tempo de Execução:

An unhandled exception of type 'System.Net.WebException' occurred in system.dll

Additional information: The remote server returned an error: 407 Proxy Authentication Required.

E seja necessária a implantação da conexão utilizando algum proxy como vemos a seguir em um exemplo para WebClient.

   System.Net.WebProxy proxy = new System.Net.WebProxy(yourproxyserver);
   proxy.Credentials = CredentialCache.DefaultCredentials;
   //if there is username/password for your proxy server setting, uncomment the following statemtnt instead.
   //proxy.Credentials = new NetworkCredential(username, password);
   GlobalProxySelection.Select = proxy;

   WebClient client = new WebClient();
   Stream rssStream = client.OpenRead(Url); 
   StreamReader textReader = new StreamReader(rssStream);
   XmlTextReader xmlReader = new XmlTextReader(textReader);
   XmlDocument xmlDoc= new XmlDocument();
   xmlDoc.Load(xmlReader);

Ou um exemplo para WebRequest.

   System.Net.WebRequest req = System.Net.WebRequest.Create(Url);
   req.Proxy = new System.Net.WebProxy(yourproxyserver, true);
   req.Proxy.Credentials = CredentialCache.DefaultCredentials;
   System.Net.WebResponse resp = req.GetResponse();
   System.IO.StreamReader textReader = new System.IO.StreamReader(resp.GetResponseStream());
   XmlTextReader xmlReader = new XmlTextReader(textReader);
   XmlDocument xmlDoc= new XmlDocument();
   xmlDoc.Load(xmlReader);

Simples mas espero ter ajudado.

 Fonte GiCode

Sobre Mim

Felipe Augusto Silva Lambert - Analista de Sistemas, experiência em 3 anos desenvolvimento ASP.NET, utilizando tecnologias ServerSide (Design Patterns, Linq, WCF, SQL Server, C# e VB.NET) e ClientSide (JavaScript e Jquery). técnico em Mecatrônica e bacharel em Ciência da Computação.