Recuperando elementos web con WebRequest a través de un proxy y validación básica en destino.
Imaginate que quieres acceder a un gráfico (gif, bmp, etc …) alojado en un servidor externo a tu red local. En nuestro ejemplo son gráficos estadísticos que nos genera nuestro proveedor de internet, al cual hay que acceder mediante una validación. A parte, disponemos de un servidor proxy en nuestra empresa para acceder a internet, que tambien requiere validación.
En este escenario, la menera más sencilla (por supuesto utilizando .NET), es utilizar los objetos NetworkCredential, WebProxy y HttpWebResponse, para recuperar el gráfico deseado.
¿Como lo hacemos?
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
namespace TestWebRequest
{
class Program
{
static void Main(string[] args)
{
WebRequest request = WebRequest.Create("http://url_a_nuestro_proveedor/fichero_a_recuperar");
// establecemos las credenciales para el servidor ISA SERVER
NetworkCredential credentials = new NetworkCredential("usuario", "password","dominio.com");
//creamos el objeto proxy que nos permitira acceder a internet
System.Net.WebProxy proxy = new System.Net.WebProxy("nuestro.servidorisa.com",8080);
proxy.Credentials = credentials; //asignamos las credenciales al objeto proxy
request.Proxy = proxy; //asignamos el proxy al objeto WebRequest.
// Credenciales para acceder a nuestro proveedor de internet
NetworkCredential reqCredentials = new NetworkCredential("usuario", "password");
request.Credentials = reqCredentials; // asignamos las credenciales.
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader streamReader = new StreamReader(stream);
Console.Write(streamReader.ReadToEnd());
Console.Read();
}
}
}
Si nuestra aplicación es de tipo web, tambien podemos indicar el servidor Proxy en el fichero Web.Config de nuestra aplicación web, de esta manera:
<configuration> <system.net> <defaultProxy> <proxy usesystemdefault="True" proxyaddress="<a ref="http://nuestro_servidor_proxy:8080/">http://nuestro_servidor_proxy:8080</a>" bypassonlocal="True"> </defaultProxy> </system.net> </configuration>
23 Julio 2009 a 1:34 PM
Juan Carlos gracias ante mano, con este tema de “Recuperando elementos web con WebRequest a través de un proxy y validación básica en destino.” me ayudaste a aterrizar.
Saludos Ariel