Introducción:
Estos ejemplos son de los cursos de Visual Basic 2005 y Visual C# 2005 que escribí para Microsoft y que están disponibles en la Web de MSDN España.
Si quieres ver
el contenido de los cursos de MSDN para Visual Studio 2005 (y bajarte el código e incluso el texto), hazlo desde este
link.
Acceder a una página Web
Empezaremos viendo cómo acceder a una página Web. Para este tipo de acceso vamos a usar la
clase abstracta WebRequest y de paso algunas otras clases como WebResponse y otras
para manejar el stream recibido con el contenido de la página solicitada.
Veamos un pequeño ejemplo, (basado y simplificado de uno de la documentación), para hacerlo:
Código para Visual Basic 2005 o superior:
' Acceder a una página Web usando WebRequest y WebResponse
Sub leerPaginaWeb(ByVal laUrl As String)
' Cear la solicitud de la URL.
Dim request As WebRequest = WebRequest.Create(laUrl)
' Obtener la respuesta.
Dim response As WebResponse = request.GetResponse()
' Abrir el stream de la respuesta recibida.
Dim reader As New StreamReader(response.GetResponseStream())
' Leer el contenido.
Dim res As String = reader.ReadToEnd()
' Mostrarlo.
Console.WriteLine(res)
' Cerrar los streams abiertos.
reader.Close()
response.Close()
End Sub
Código para Visual C# 2005 o superior:
// Acceder a una página Web usando WebRequest y WebResponse
static void leerPaginaWeb(string laUrl)
{
// Cear la solicitud de la URL.
WebRequest request = WebRequest.Create(laUrl);
// Obtener la respuesta.
WebResponse response = request.GetResponse();
// Abrir el stream de la respuesta recibida.
StreamReader reader =
new StreamReader(response.GetResponseStream());
// Leer el contenido.
string res = reader.ReadToEnd();
// Mostrarlo.
Console.WriteLine(res);
// Cerrar los streams abiertos.
reader.Close();
response.Close();
}
Si la dirección que estamos solicitando es una página "activa" (por ejemplo, una
página ASPX o PHP), el valor que recibiremos es
el código "cliente", es decir, el código que se enviará al navegador.
Indicar el navegador que simulará el uso de la página
Si necesitamos hacer algunas peticiones más específicas o necesitamos obtener alguna otra
información podemos usar un objeto del tipo HttpWebRequest el cual está basado en la
clase WebRequest, pero que la amplía para ofrecer otros tipos de información y acciones
más adecuadas a una petición HTTP.
La forma de usar esta clase sería igual que WebRequest, además de que la documentación
recomienda usar el método Create de WebRequest para crear una nueva instancia de
HttpWebrequest.
En el siguiente ejemplo, le indicamos que estamos usando un navegador desde un "Smartphone":
Código para Visual Basic 2005 o superior:
Sub leerPaginaWeb2(ByVal laUrl As String)
' Crear la solicitud de la URL.
Dim hRequest As HttpWebRequest = TryCast(WebRequest.Create(laUrl), _
HttpWebRequest)
' para que lo devuelva como si accediéramos con un Smartphone
hRequest.UserAgent = _
"Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 176x220)"
' Obtener la respuesta y abrir el stream de la respuesta recibida.
Dim reader As New StreamReader(hRequest.GetResponse().GetResponseStream())
Dim res As String = reader.ReadToEnd()
' Mostrarlo.
Console.WriteLine(res)
' Cerrar el stream abierto.
reader.Close()
End Sub
Código para Visual C# 2005 o superior:
static void leerPaginaWeb2(string laUrl)
{
// Cear la solicitud de la URL.
HttpWebRequest hRequest = ((HttpWebRequest)WebRequest.Create(laUrl));
// para que lo devuelva como si accediéramos con un Smartphone
hRequest.UserAgent =
"Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; Smartphone; 176x220)";
// Obtener la respuesta y abrir el stream de la respuesta recibida.
StreamReader reader =
new StreamReader(hRequest.GetResponse().GetResponseStream());
string res = reader.ReadToEnd();
// Mostrarlo.
Console.WriteLine(res);
// Cerrar el stream abierto.
reader.Close();
}
Para usar estos ejemplos, por ejemplo para ver una página de prueba de mi sitio, habría que
hacer esto:
Sub Main()
leerPaginaWeb("http://www.elguille.info/pruebas/useragent.aspx")
leerPaginaWeb2("http://www.elguille.info/pruebas/useragent.aspx")
Console.ReadLine()
End Sub
static void Main()
{
leerPaginaWeb("http://www.elguille.info/pruebas/useragent.aspx");
leerPaginaWeb2("http://www.elguille.info/pruebas/useragent.aspx");
Console.ReadLine();
}
Espero que te sea de utilidad.
Nos vemos.
Guillermo
Espacios de nombres usados en el código de este artículo:
System.IO
System.Net