Uso de Visual C# para realizar una solicitud GET
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 del producto original: Visual Studio
Número de KB original: 307023
Resumen
Microsoft .NET Framework incluye muchas clases útiles para redes, incluida la capacidad de realizar solicitudes web.
En este artículo se hace referencia a los siguientes espacios de nombres de 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 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 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 la codificación directa en las API de Windows Internet (WinINet).
En .NET, los System.Net
espacios de nombres proporcionan la WebRequest
clase para encapsular una solicitud para 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 para 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:
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 aSystem.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 que 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ía 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
WebRequest
objeto. Esto solo se puede hacer a través del método estáticoCreate
de laWebRequest
clase (nuevo unWebRequest
objeto 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 permiten especificar la misma información básica que se 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 la configuración que ya se ha configurado 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 Lista de miembros o tipos obsoletos de .NET Framework V2.0 (por ensamblado).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 el flujo 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 de una línea a la vez hasta que el
ReadLine
método devuelve null, generando 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();
Guarde y ejecute el programa. Compruebe que ha configurado la información del proxy correctamente para su entorno (consulte 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();
}
}
}
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de