Usando o Visual C# para fazer uma solicitação GET
Este artigo descreve como fazer uma solicitação GET
para recuperar uma página da Web da Internet usando o Visual C#.
Versão original do produto: Visual Studio
Número de KB original: 307023
Resumo
O microsoft .NET Framework inclui muitas classes úteis para rede, incluindo a capacidade de fazer solicitações da Web.
Este artigo refere-se aos seguintes namespaces da Biblioteca de Classes .NET Framework:
System.Net
System.IO
Requisitos
A lista a seguir descreve o hardware e o software recomendados que você precisa:
- Windows
- Visual Studio
Observação
Se você estiver por trás de um servidor proxy, deverá ter um endereço Web interno ou valores de proxy estáticos (confira as etapas 5 e 6 da seção Solicitar uma página da Web ) para testar o código neste artigo.
Solicitar uma página da Web
A capacidade de recuperar uma página da Web programaticamente tem muitos usos. Essa capacidade foi fornecida aos programadores do Visual Basic por meio do Controle de Transferência da Internet ou por meio da codificação direta nas APIs wininet (Internet do Windows).
No .NET, os System.Net
namespaces fornecem a WebRequest
classe para encapsular uma solicitação de um recurso da Internet e a WebResponse
classe para representar os dados retornados.
Usando esses objetos, você pode obter um fluxo que representa a resposta para uma solicitação específica. Quando você tem um fluxo, você pode ler a resposta assim que ler de um arquivo de texto local ou de qualquer outra fonte.
Para fazer uma solicitação GET
, siga estas etapas:
Inicie o Visual Studio.
Crie um novo aplicativo de console no Visual C#. O Visual Studio cria automaticamente uma classe pública e um método vazio
Main
.Verifique se o projeto faz referência pelo menos System.dll.
Use a diretiva de uso no
System
namespace, noSystem.NET
namespace e noSystem.IO
namespace (para os objetos de fluxo) para que você não precise qualificar declarações desses namespaces posteriormente em seu código. Essas instruções devem ser usadas antes de qualquer outra declaração.using System; using System.Net; using System.IO;
Para este exemplo, código rígido da URL como uma variável. Em um sistema real, você provavelmente receberia esse valor como um parâmetro para uma função ou como um argumento de linha de comando para um aplicativo de console.
string sURL; sURL = "http://www.contoso.com";
Crie um novo
WebRequest
objeto. Você só pode fazer isso por meio do método estáticoCreate
daWebRequest
classe (novoWebRequest
objeto não é válido). Forneça a URL de destino como parte da chamada paraCreate
inicializar o objeto que tem esse valor.WebRequest wrGETURL; wrGETURL = WebRequest.Create(sURL);
Se você quiser solicitar URLs fora da rede local e estiver por trás de um proxy, crie um
WebProxy
objeto e forneça esse objeto ao objetoWebRequest
. OWebProxy
objeto tem uma variedade de propriedades, que não estão definidas no código de exemplo abaixo, que permitem especificar as mesmas informações básicas que você pode definir por meio das configurações de proxy na Internet Explorer.WebProxy myProxy = new WebProxy("myproxy",80); myProxy.BypassProxyOnLocal = true; wrGETURL.Proxy = myProxy;
Se você quiser usar as configurações que já estavam configuradas na Internet Explorer, poderá usar o
GetDefaultProxy
método estático daWebProxy
classe.wrGETURL.Proxy = WebProxy.GetDefaultProxy();
Observação
No Visual Studio 2005 ou No Visual Studio 2008, o
GetDefaultProxy
método funciona. No entanto, esse método foi preterido. Para obter mais informações sobre oGetDefaultProxy
método no .NET Framework 2.0, consulte .NET Framework V2.0 Obsolete Type/Member List (By Assembly).Quando você tiver concluído a configuração de sua solicitação definindo a URL de destino e dando qualquer informação de proxy aplicável, você pode usar sua solicitação para obter um
Stream
objeto que corresponda à resposta para sua solicitação.Stream objStream; objStream = wrGETURL.GetResponse().GetResponseStream();
Quando você tem o fluxo de resposta, pode usar o fluxo como usaria qualquer outro fluxo e pode ler o conteúdo da linha de fluxo por linha ou até mesmo tudo ao mesmo tempo. O loop de código de exemplo a seguir lê o fluxo de uma linha de cada vez até que o
ReadLine
método retorne nulo, gerando cada linha para o console.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();
Salve e execute seu programa. Verifique se você configurou as informações de proxy corretamente para seu ambiente (confira as etapas 7 e 8). Você deve ver linhas de conteúdo HTML numeradas e saídas para o console.
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();
}
}
}
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários