Como fazer uma solicitação GET usando o Visual C++

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 815657
Para uma versão deste artigo do Microsoft Visual Basic. NET, consulte 301102.
Para obter uma Microsoft Visual translation from VPE for Csharp .NET versão deste artigo, consulte 307023.
Este artigo se refere aos seguintes namespaces Microsoft .NET Framework Class Library:
  • System::Net
  • System::IO

NESTA TAREFA

Sumário
O Microsoft .NET Framework inclui várias classes para a rede. Você também pode usar essas classes para fazer solicitações da Web. Este artigo descreve como fazer uma solicitação GET para recuperar uma página da Web.

back to the top

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server ou Microsoft Windows NT 4.0 Server
  • Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005
Observação Se você estiver atrás de um servidor proxy, você deve ter um endereço da Web interno ou valores de proxy estática para testar o código neste artigo. Para obter mais informações, consulte as etapas 7 e 8 na seção "solicitar uma página da Web".

back to the top

Solicitar uma página da Web

No Microsoft Visual Basic 6.0, você pode usar o controle de Internet Transfer Control ou pode usar a codificação direta contra o WinInet interfaces de programação de aplicativo (APIs) para recuperar uma página da Web por meio de programação.

No .NET Framework, os espaços para nome System::Net fornecem a classe WebRequest para encapsular uma solicitação para um recurso de Internet. Os namespaces System::Net também fornecem a classe de WebResponse para representar os dados retornados.

Se você usar essas classes, você pode receber um fluxo que representa a resposta para uma determinada solicitação. Quando você tiver este fluxo, você pode ler a resposta como você poderia ler de um arquivo de texto local ou de qualquer outra fonte.

Para fazer uma solicitação GET , execute estas etapas:
  1. Inicie o Visual Studio .NET ou Visual Studio 2005.
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
  3. No Visual Studio .NET 2002, clique em Projetos do Visual c++ em Tipos de projeto e, em seguida, clique em Aplicativo de C++ gerenciado em modelos .

    No Visual Studio .NET 2003, clique em Projetos do Visual c++ em Tipos de projeto e, em seguida, clique em Aplicativo de console (NET) em modelos .

    No Visual C++ 2005, clique em Visual C++ em Tipos de projeto e, em seguida, clique em Aplicativo de console CLR em modelos .

    O Visual C++ .NET cria um arquivo padrão e uma função __tmain . O Visual C++ 2005 cria um arquivo padrão e uma função main .
  4. Verifique se que o projeto faz referência pelo menos o assembly System.dll .

    No Visual C++ .NET 2002, consulte explicitamente System.dll na parte superior do arquivo de origem. Para fazer isso, use o seguinte código:
    #using <mscorlib.dll>#include <tchar.h>#using <System.Dll> // Refers "System.Dll" file.
    Para obter informações adicionais sobre como adicionar referências a um projeto Managed Visual C++ no Visual Studio .NET 2002 e no Visual Studio .NET 2003, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    310674COMO: Adicionar referências a um projeto gerenciado do Visual C++
  5. Use a diretiva usando no namespace System , no namespace System::NET e no namespace System::IO para os objetos fluxo para que você não tem que qualificar declarações desses namespaces posteriormente no seu código. Você deve use as instruções a seguir antes de usar qualquer outra declaração:
    using namespace System;using namespace System::Net;using namespace System::IO;
  6. Neste exemplo, declare uma seqüência de caracteres variável e, em seguida, embutir a URL para essa variável de seqüência de caracteres. Em um sistema real, você pode receber o seguinte valor como um parâmetro para uma função ou como um argumento da linha de comando para um aplicativo de console:
    String *sURL = S"http://www.microsoft.com";
  7. Crie um novo objeto WebRequest . Não use o código a seguir para fazer isso:
    new WebRequest
    em vez, você deve usar o método criar estático da classe WebRequest . Fornecer a URL de destino como parte da chamada para o método Create para inicializar o objeto com o seguinte valor:
    WebRequest *wrGETURL;wrGETURL = WebRequest::Create(sURL);
  8. Se você deseja solicitar URLs fora da rede local e estiver atrás de um servidor proxy, você deve criar um objeto WebProxy e fornecer este objeto para o objeto WebRequest , da seguinte maneira:
    WebProxy *myProxy = new WebProxy(S"myproxy", 80);myProxy->BypassProxyOnLocal = true;wrGETURL->Proxy = myProxy;
    Observação O objeto WebProxy tem uma variedade de propriedades que permitem que você defina as mesmas informações básicas que você pode definir usando as configurações de proxy no Microsoft Internet Explorer. Essas propriedades não são definidas neste código de exemplo.
  9. Para usar configurações do Internet Explorer já configuradas, use o método estático GetDefaultProxy da classe WebProxy , da seguinte maneira:
    wrGETURL->Proxy = WebProxy::GetDefaultProxy();
  10. Quando a solicitação é configurada com a URL de destino e quaisquer informações proxy aplicável, você pode usar sua solicitação para receber um objeto de fluxo que corresponde à resposta à sua solicitação da seguinte maneira:
    Stream *objStream = wrGETURL->GetResponse()->GetResponseStream();
  11. Quando você tem o fluxo de resposta, você pode usar este fluxo como você usaria qualquer outro fluxo--por exemplo, como você poderia usar steam que ocorre quando você abre um arquivo de texto. Além disso, você pode ler o conteúdo do fluxo de linha-por-linha ou todas ao mesmo tempo. O seguinte código de exemplo loop-lê o fluxo de uma linha por vez até que o método ReadLine retorna um resultado Nulo por cada linha para o console de saída:
    while(sLine != NULL){	i += 1;	sLine = objReader->ReadLine();	if(sLine != NULL)		Console::WriteLine(S"{0}:{1}", __box(i), sLine);}
  12. Salve e, em seguida, execute o programa. Verifique se você configurou as informações de proxy corretamente para o seu ambiente (consulte as etapas 7 e 8). Linhas de conteúdo em HTML são numeradas e saídas para o console.
back to the top

Concluir código listagem

#include "stdafx.h"#using <mscorlib.dll>#using <System.dll>#include <tchar.h>using namespace System;using namespace System::Net;using namespace System::IO; void _tmain(void){ 	String *sURL = S"http://www.microsoft.com";	WebRequest *wrGETURL;	wrGETURL = WebRequest::Create(sURL);	WebProxy *myProxy = new WebProxy(S"myproxy", 80);	myProxy->BypassProxyOnLocal = true;	//wrGETURL.Proxy = myProxy;	wrGETURL->Proxy = WebProxy::GetDefaultProxy();	Stream *objStream = wrGETURL->GetResponse()->GetResponseStream();	StreamReader *objReader = new StreamReader(objStream);	String *sLine = S"";	Int32 i = 0;	while(sLine != NULL)	{		i += 1;		sLine = objReader->ReadLine();		if(sLine != NULL)			Console::WriteLine(S"{0}:{1}", __box(i), sLine);	}	Console::ReadLine();}
back to the top
Referências
Para obter mais informações, consulte o seguinte livro:
Templeman, Andy Olsen e juliano. Microsoft Visual C++ .NET Step by Step. Microsoft Press, 2003
Para obter informações adicionais, visite a seguinte site da Microsoft Developer Network (MSDN):back to the top
WebResponse WebRequest, WebProxy,

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 815657 - Última Revisão: 01/11/2007 06:35:24 - Revisão: 3.1

Microsoft Visual C++ 2005 Express Edition, Microsoft Visual C++ .NET 2003 Standard Edition, Microsoft Visual C++ .NET 2002 Standard Edition, Microsoft .NET Framework 1.1, Microsoft .NET Framework 1.0

  • kbmt kbio kbhtml kbhowtomaster KB815657 KbMtpt
Comentários