Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe cómo realizar una GET
solicitud para recuperar una página web de Internet mediante Visual C#.
Versión original del producto: Visual Studio
Número de KB original: 307023
Resumen
Microsoft .NET Framework incluye muchas clases útiles para las redes, incluida la capacidad de realizar solicitudes web.
En este artículo se hace referencia a los siguientes espacios de nombres de la biblioteca de clases de .NET Framework:
System.Net
System.IO
Requisitos
En la lista siguiente se describen 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.
Solicitud de una página web
La capacidad de recuperar una página web mediante programación tiene muchos usos. Esta capacidad se proporcionó a los programadores de Visual Basic a través del control de transferencia de Internet o a través de codificación directa con las API de Windows Internet (WinINet).
En .NET, los System.Net
espacios de nombres proporcionan la WebRequest
clase para encapsular una solicitud de un recurso de Internet y la WebResponse
clase para representar los datos que se devuelven.
Mediante el uso de estos objetos, puede obtener una secuencia que represente la respuesta de una solicitud determinada. Cuando tenga una secuencia, puede leer la respuesta al leer desde un archivo de texto local o desde cualquier otro origen.
Para realizar una GET
solicitud, siga estos pasos:
Inicie Visual Studio.
Cree una nueva aplicación de consola en Visual C#. Visual Studio crea automáticamente una clase pública y un método vacío
Main
.Compruebe que el proyecto hace referencia al menos System.dll.
Use la directiva using en el
System
espacio de nombres, elSystem.NET
espacio de nombres y elSystem.IO
espacio de nombres (para los objetos stream) para que no tenga que calificar las declaraciones de estos espacios de nombres más adelante en el código. Estas instrucciones deben usarse antes de cualquier otra declaración.using System; using System.Net; using System.IO;
En este ejemplo, codifique de forma rígida la dirección URL como una variable. En un sistema real, probablemente recibirá este valor como parámetro para una función o como argumento de línea de comandos para una aplicación de consola.
string sURL; sURL = "http://www.contoso.com";
Cree un nuevo objeto
WebRequest
. Solo puede hacerlo a través del método estáticoCreate
de laWebRequest
clase (el nuevo objetoWebRequest
no es válido). Proporcione la dirección URL de destino como parte de la llamada aCreate
para inicializar el objeto que tiene este valor.WebRequest wrGETURL; wrGETURL = WebRequest.Create(sURL);
Si desea solicitar direcciones URL fuera de la red local y está detrás de un proxy, debe crear un
WebProxy
objeto y, a continuación, proporcionar este objeto alWebRequest
objeto. ElWebProxy
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 Internet Explorer.WebProxy myProxy = new WebProxy("myproxy",80); myProxy.BypassProxyOnLocal = true; wrGETURL.Proxy = myProxy;
Si desea usar las opciones que ya estaban configuradas en Internet Explorer, puede usar el
GetDefaultProxy
método estático de laWebProxy
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 sobre elGetDefaultProxy
método en .NET Framework 2.0, vea .NET Framework V2.0 Obsolete Type/Member List (By Assembly).Cuando haya completado la configuración de la solicitud estableciendo la dirección URL de destino y proporcionando cualquier información de proxy aplicable, puede usar la solicitud para obtener un
Stream
objeto que corresponda a la respuesta de la solicitud.Stream objStream; objStream = wrGETURL.GetResponse().GetResponseStream();
Cuando tenga la secuencia de respuesta, puede usar la secuencia como usaría cualquier otra secuencia y puede leer el contenido de la línea de secuencia por línea, o incluso todos 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, mediante la
ReadLine
salida de cada línea a 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();
Guarde y ejecute el programa. Compruebe que ha configurado correctamente la información de proxy para su entorno (consulte los pasos 7 y 8). Debería ver líneas de contenido HTML numeradas y mostradas 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();
}
}
}