A ver, cuestión peliaguda...

En progrmación COM tradicional lo que se solía utilizar a la hora de conectar con un recurso Web mediante HTTP, fuera éste una página o un servicio Web, se solía emplear la biblioteca WinHTTP o bien la clase que a tal efecto proporcionaban las bibliotecas MSXML. En ambos casos si la conectividad se obtenía a través de un Proxy era necesario configurarlo usando una utilidad externa de línea de comandos, lo cual era un verdadero problema en distribuciones grandes o que debíamos hacer manualmente. No digamos si la aplicaci´no era en un servidor Web al que sólo teníamos acceso mediante FTP.

Con .NET la vida es mucho más fácil, como ya es sabido. Así, por ejemplo, cuando vamos a consumir un servicio Web desde una aplicación .NET, al añadir una referencia Web se crea una clase que nos abstrae de la complejidad de llamar a los métodos remotos y gestionar las comunicaciones HTTP. Esta clase hereda de SoapHttpClientProtocol, que a su vez hereda de HttpWebClientProtocol. Ésta dispone de una propiedad llamada Proxy del tipo System.Net.IWebProxy, que nos permite especificar la información del proxy a utilizar.

De este modo, si necesitamos especificar información sobre un Proxy para acceder a la Web basta con escribir código análogo al siguiente:

string DireccionDelProxy = "10.0.0.80";  //La URL o dirección IP del servidor proxy
int PuertoDelProxy = 8080;   //Puerto por el que escucha el proxy
//Se crea una instancia del objeto proxy
System.Net.WebProxy miProxy = new System.Net.WebProxy(DireccionDelProxy, PuertoDelProxy);
//y se asigna al envoltorio del servicio Web (o similar)
miServicio.Proxy = miProxy;

Como vemos muy sencillo.

Si además fuese necesario utilizar unas credenciales (nombre + clave) para poder hacer uso del Proxy sólo tenemos que crear una nueva instancia de la clase System.Net.NetworkCredentials y asignarla a la propiedad Credentials del proxy, así:

miProxy.Credentials = new System.Net.Credentials("Usuario", "contraseña", "dominio");

 

Escrito por un humano, no por una IA