el Guille, la Web del Visual Basic, C#, .NET y más...

Acceder al contenido de una página Web

 
Publicado el 04/Abr/2008
Actualizado el 04/Abr/2008
Autor: Guillermo 'guille' Som

Ejemplo de cómo acceder al contenido de una página Web usando código de Visual Basic y C# y las clases de System.Net, incluso indicando el tipo de navegador a usar (para que se muestre el contenido que tendría según ese navegador, en el ejemplo se indica que se usará un Smartphone).



 

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
 



 


La fecha/hora en el servidor es: 23/12/2024 3:24:38

La fecha actual GMT (UTC) es: 

©Guillermo 'guille' Som, 1996-2024