Cómo realizar una solicitud GET mediante Visual C#

Para una versión de Microsoft Visual Basic .NET de este artículo, consulte
301102 .

En este artículo se refiere a los siguientes espacios de nombres de biblioteca de clases de Microsoft.NET Framework:
  • System.Net
  • System.IO

Resumen

En este artículo paso a paso se describe cómo hacer una sencilla solicitud GET para recuperar una página Web de Internet. El Microsoft.NET Framework incluye muchas clases útiles para redes, incluida la capacidad para hacer solicitudes Web.

Requisitos

La lista siguiente describe el hardware, software, infraestructura de red y service packs recomendados que necesita:
  • Windows Server 2003, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server o Microsoft Windows NT 4.0 Server
  • Microsoft Visual Studio
Nota: Si está detrás de un servidor proxy, debe tener una dirección Web interna o valores de proxy estáticos (consulte los pasos 5 y 6 de la sección "solicitud de una página Web") para probar el código de este artículo.

Solicitud de una página Web

La capacidad de recuperar una página Web mediante programación tiene un muchos usos. Esta capacidad se proporcionaba a los programadores de Microsoft Visual Basic 6.0 a través de Internet Transfer Control o mediante la codificación directa en las APIs de WinInet.

En. NET, los espacios de nombres System.Net proporcionan la clase WebRequest para encapsular una solicitud de un recurso de Internet y la clase WebResponse para representar los datos que se devuelven.

Mediante el uso de estos objetos, puede obtener una secuencia que representa la respuesta para una solicitud determinada. Si tiene una secuencia, puede leer la respuesta igual que leer un archivo de texto local o de cualquier otro origen.

Para realizar una solicitud GET, siga estos pasos:
  1. Inicie Visual Studio.
  2. Cree una nueva aplicación de consola en Visual C#. Visual Studio crea automáticamente una clase pública y un método Main vacío.
  3. Compruebe que el proyecto hace referencia al menos System.dll.
  4. Utilice la directiva using en el espacio de nombres del sistema , el espacio de nombres System.NET y el espacio de nombres System.IO (para los objetos de secuencias) por lo que no tendrá que suministrar declaraciones de estos espacios de nombres más adelante en el código. Estas instrucciones deben usarse antes que cualquier otra declaración.
    using System;using System.Net;
    using System.IO;
  5. Para este ejemplo, codificar la dirección URL como una variable. En un sistema real, probablemente recibiría este valor como un parámetro a una función, o como un argumento de línea de comandos para una aplicación de consola.
    string sURL;sURL = "http://www.microsoft.com";
  6. Crear un nuevo objeto WebRequest . Puede hacerlo sólo mediante el método de creación estático de la clase WebRequest ("New WebRequest" no es válido). Proporcione la dirección URL de destino como parte de la llamada a Create para inicializar el objeto con este valor.
    WebRequest wrGETURL;wrGETURL = WebRequest.Create(sURL);
  7. Si desea solicitar direcciones URL fuera de la red local y está detrás de un servidor proxy, debe crear un objeto WebProxy y, a continuación, proporcionar este objeto al objeto WebRequest . El objeto WebProxy posee diversas propiedades, que no se establecen en el siguiente ejemplo de código, que permiten especificar la misma información básica que se puede establecer a través de la configuración de proxy en Microsoft Internet Explorer.
    WebProxy myProxy = new WebProxy("myproxy",80);myProxy.BypassProxyOnLocal = true;

    wrGETURL.Proxy = myProxy;
  8. Si desea utilizar la configuración que ya se ha configurado en Internet Explorer, puede hacerlo a través del método estático GetDefaultProxy de la clase WebProxy .
    wrGETURL.Proxy = WebProxy.GetDefaultProxy();
    Nota: En Visual Studio 2005 o Visual Studio 2008, el método GetDefaultProxy funciona. Sin embargo, este método ha quedado obsoleto. Para obtener más información acerca del método GetDefaultProxy en el Microsoft.NET Framework 2.0, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
  9. Cuando se ha completado la configuración de su solicitud estableciendo la dirección URL de destino y proporcionando cualquier información de proxy aplicable, puede utilizar su solicitud para obtener un objeto Stream que corresponde a la respuesta a su solicitud.
    Stream objStream;objStream = wrGETURL.GetResponse().GetResponseStream();
  10. Cuando tenga la secuencia de respuesta, puede utilizar la secuencia como usaría cualquier otra secuencia y puede leer el contenido de la secuencia línea a línea o incluso todos al mismo tiempo. El bucle de código de ejemplo siguiente lee la secuencia línea a la vez hasta que el método ReadLine devuelve null, mostrando cada línea en la consola.
    StreamReader objReader = new StreamReader(objStream);
    string sLine = "";
    int i = 0;

    while (sLine!=null)
    {
    i++;
    sLine = objReader.ReadLine();
    if (sLine!=null)
    Console.WriteLine("{0}:{1}",i,sLine);
    }
    Console.ReadLine();
  11. Guarde y ejecute el programa. Compruebe que ha configurado correctamente la información del proxy para el entorno (consulte los pasos 7 y 8). Debería ver las líneas de contenido HTML numerados en la consola.

Lista de código completa

using System;using System.Net;
using System.IO;

namespace MakeAGETRequest_charp
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
static void Main(string[] args)
{
string sURL;
sURL = "http://www.microsoft.com";

WebRequest wrGETURL;
wrGETURL = WebRequest.Create(sURL);

WebProxy myProxy = new WebProxy("myproxy",80);
myProxy.BypassProxyOnLocal = true;

wrGETURL.Proxy = WebProxy.GetDefaultProxy();

Stream objStream;
objStream = wrGETURL.GetResponse().GetResponseStream();

StreamReader objReader = new StreamReader(objStream);

string sLine = "";
int i = 0;

while (sLine!=null)
{
i++;
sLine = objReader.ReadLine();
if (sLine!=null)
Console.WriteLine("{0}:{1}",i,sLine);
}
Console.ReadLine();
}
}
}
Propiedades

Id. de artículo: 307023 - Última revisión: 22 ene. 2017 - Revisión: 2

Comentarios