Uso de C# visual para realizar una solicitud GET

En este artículo se describe cómo realizar una solicitud para recuperar una página web de GET Internet mediante Visual C#.

Versión del producto original:   Visual Studio
Número KB original:   307023

Resumen

Microsoft .NET Framework muchas clases útiles para las redes, incluida la capacidad de realizar solicitudes web.

En este artículo se hace referencia a los siguientes espacios .NET Framework biblioteca de clases:

  • System.Net
  • System.IO

Requisitos

En la siguiente lista se describe el hardware y el software recomendados que necesita:

  • Windows
  • 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 Solicitar una página web) para probar el código de este artículo.

Solicitar una página web

La capacidad de recuperar una página web mediante programación tiene muchos usos. Esta capacidad se proporcionó para Visual Basic programadores a través del Control de transferencia de Internet o mediante la codificación directa en las API Windows Internet (WinINet).

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

Al usar estos objetos, puede obtener una secuencia que represente la respuesta de una solicitud determinada. Cuando tiene una secuencia, puede leer la respuesta tal como se lee desde un archivo de texto local o desde cualquier otro origen.

Para realizar una GET solicitud, 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 haga referencia al menos System.dll.

  4. Use la directiva using en el espacio de nombres, el espacio de nombres y el espacio de nombres (para los objetos de secuencia) para que no tenga que calificar declaraciones de estos espacios de nombres más adelante en System System.NET el System.IO código. Estas instrucciones deben usarse antes de cualquier otra declaración.

    using System;
    using System.Net;
    using System.IO;
    
  5. En este ejemplo, codifica la dirección URL como variable. In a real system, you would probably receive this value as a parameter to a function, or as a command-line argument to a console application.

    string sURL;
    sURL = "http://www.contoso.com";
    
  6. Cree un nuevo WebRequest objeto. Solo puede hacerlo a través del método Create estático de la clase ( WebRequest nuevo un objeto no WebRequest es válido). Proporcione la dirección URL de destino como parte de la llamada para Create inicializar el objeto que tiene 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 proxy, debe crear un objeto y, a continuación, proporcionar este objeto WebProxy al WebRequest objeto. El objeto tiene una variedad de propiedades, que no se establecen en el código de ejemplo siguiente, que le permiten especificar la misma información básica que puede establecer a través de la configuración de proxy en WebProxy Internet Explorer.

    WebProxy myProxy = new WebProxy("myproxy",80);
    myProxy.BypassProxyOnLocal = true;
    
    wrGETURL.Proxy = myProxy;
    
  8. Si desea usar la configuración que ya estaba configurada en Internet Explorer, puede usar el GetDefaultProxy método estático de la WebProxy clase.

    wrGETURL.Proxy = WebProxy.GetDefaultProxy();
    

    Nota

    En Visual Studio 2005 o Visual Studio 2008, el GetDefaultProxy método funciona. Sin embargo, este método ha quedado en desuso. Para obtener más información acerca del método en GetDefaultProxy la .NET Framework 2.0, vea .NET Framework V2.0 Obsolete Type/Member List (Por ensamblado).

  9. Cuando haya completado la configuración de la solicitud estableciendo la dirección URL de destino y dando cualquier información de proxy aplicable, puede usar la solicitud para obtener un objeto que corresponda a la respuesta de Stream la solicitud.

    Stream objStream;
    objStream = wrGETURL.GetResponse().GetResponseStream();
    
  10. Cuando tenga la secuencia de respuesta, puede usar la secuencia como usaría cualquier otra secuencia y puede leer el contenido de la secuencia línea por línea, o incluso todo al mismo tiempo. El siguiente bucle de código de ejemplo lee la secuencia una línea a la vez hasta que el método devuelve null, al generar cada línea ReadLine 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, a continuación, ejecute el programa. Compruebe que ha configurado la información de proxy correctamente para su entorno (vea los pasos 7 y 8). Debería ver líneas de contenido HTML numeradas y salidas 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.contoso.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();
        }
    }
}