Back-End

9 jun, 2010

Trabalhando com o componente ASP HTTP

Publicidade

Este componente permite que uma página ASP obtenha dados/documentos
através do protocolo HTTP.

Mas o que é o protocolo
HTTP?
Hyper Text Transfer Protocol é o protocolo usado na World Wide Web
para distribuição e recuperação de informação. A troca de informações
entre um browser e um servidor Web é toda feita através desse protocolo,
que foi criado especificamente para a World Wide Web. O protocolo HTTP
define uma forma de conversação no estilo pedido-resposta entre um
cliente (browser) e um servidor (servidor Web).

Toda a conversação se dá no formato ASCII (texto puro) através de um
conjunto de comandos simples.

O ASPHTTP também pode postar dados para uma página web remota. A
capacidade de analisar dados fora de uma página da Web e colocá-la em
seu próprio formato é uma necessidade. O componente asphttp permite
retirar a página web remota em seu código como uma string.

Instalando o Componente ASPHTTP

Para usar esse componente, copie a DLL para um subdiretório (como \
winnt \ system32) e, para registrar o componente, use o comando
regsvr32. Através do menu Iniciar, aponte para executar e digite CMD,
pressione <ENTER>, e digite:

regsvr32 asphttp.dll

Exemplo

Vejamos agora como é simples usar. Primeiro, crie o objeto, defina uma
única propriedade e chame o método GetURL; o código a seguir demonstra
como usar AspHTTP.

Set HttpObj = Server.CreateObject("AspHTTP.Conn")

HTTPObj.Url = "http://www.seu_dominio.com.br/qrtresults.html"

strResult = HTTPObj.GetURL

A variável strResult chamada contém uma seqüência que representa o
documento que resulta de um GET de http://www.
seu_dominio.com.br/qrtresults.html
.

Postando os dados

AspHTTP lhe permite publicar dados de volta para o servidor web. O
seguinte exemplo demonstra um pedido POST:

Set HttpObj = Server.CreateObject("AspHTTP.Conn")

HTTPObj.Url = "http:// www.seu_dominio.com.br/scripts/update3.asp"

HTTPObj.PostData = "uid=jimb&pwd=teste&id=32&val=1.5?

HTTPObj.RequestMethod = "POST"

strResult = HTTPObj.GetURL

A variável strResult contém uma seqüência que representa o documento
que resulta de um POST para http://www.
seu_dominio.com.br/scripts/update3.asp.

Propriedades AspHTTP

  • Accept

A
propriedade Accept indica o tipo de MIME, que pode ser aceito pelo
programa solicitante. Exemplo:

HTTPObj.Accept =
"*/*"
  • Authorization

O cabeçalho de autorização
permite que você recupere as URLs que estão localizados em áreas
autenticadas. Para utilizar a propriedade de Autorização, defina
essa propriedade para o nome de usuário e senha, separados por dois
pontos “:”, para a área protegida por senha. Exemplo:

HTTPObj.Authorization = "xanburzum:mxstudio"
  • BinaryData

Retorna os dados disponíveis a
partir do pedido GetURL na forma binária. Você pode usar essa
propriedade para pegar dados binários, como imagens fora de um outro
servidor. Exemplo:

<%

Response.ContentType = "image/gif"

Set HTTPObj = Server.CreateObject("AspHTTP.Conn")

HTTPObj.Url =
"http://www.microsoft.com/library/images/gifs/toolbar/write.gif"

HTTPObj.GetURL

Response.BinaryWrite HTTPObj.BinaryData

%> 
  • ContentType

A propriedade ContentType permite especificar o conteúdo personalizado de cabeçalhos tipo durante uma operação POST. Exemplo:

ContentType = "application/x-www-form-urlencoded"
  • Error

Relatórios de quaisquer erros que
possam ocorrer durante a solicitação.FollowRedirectsDiz ao
componente para acompanhar as respostas de redirecionamento do
servidor HTTP. Exemplo:

HTTPObj.FollowRedirects = true
  • Headers

A propriedade Headers contém os
cabeçalhos de resposta da solicitação HTTP após o pedido
completado por uma chamada para o método getURL. Exemplo:

Response.Write HTTPObj.Headers
  • HTTPLog

Nome do arquivo onde os dados de
transações HTTP podem ser registrados. Exemplo:

HTTPObj.HTTPLog = "c:\httplog.txt"
  • MaxRedirects

Define o número máximo de
vezes que um redirecionamento HTTP será permitido. O valor padrão é
3.PortA propriedade Port indica qual porta entra em contato com o
servidor HTTP:

HTTPObj.Port   = 80
  • PostData

A propriedade PostData deve ser
definida para os valores dos dados que pretende enviar para o
servidor para um pedido de post. Exemplo:

HTTPObj.PostData = "suid=jimb&act=upd"
  • Protocol

A propriedade protocol indica
qual a versão do HTTP em que a solicitação deve ser feita. Por padrão,
protocolo HTTP/1.0. Exemplo:

HTTPObj.Protocol = "HTTP/1.1"
  • Proxy

Contém o endereço do proxy e a
porta do servidor proxy separados por dois pontos. Exemplo:

HTTPObj.Proxy = "address.net:2001"
  • ProxyPassword

Configura a senha do proxy
HTTP para servidores proxy HTTP que requerem autenticação. Apenas a
autenticação básica é suportada. RequestMethodA propriedade
RequestMethod indica que tipo de solicitação HTTP devem ser feitas
para o servidor. Os valores válidos são “GET”, “POST”
e “Head”. Exemplo:

HTTPObj.RequestMethod = "POST"
  • RegisteredUser

A propriedade RequestMethod
indica a propriedade RegisteredUser indica o nome do componente está
licenciado. Exemplo:

Response.Write   " Este componente está   licenciado para " & 
HTTPObj.RegisteredUser
  • Response

A propriedade de Response contém a resposta HTTP
após um pedido ter sido recebido de um servidor web.SaveFileToO
SaveFileTo permite recuperar arquivos de qualquer tipo e tê-los
automaticamente gravados em um disco do servidor local. Isso lhe
permite recuperar arquivos binários, como imagens, bem como arquivos
de texto, como arquivos HTML. Para usar a propriedade SaveFileTo,
defina o valor da SaveFileTo para o nome do diretório local e nome
do arquivo onde o URL solicitado deve ser guardado. Certifique-se de que o
usuário tem direitos de segurança que permitem a escrita do
arquivo. Defina essa propriedade antes da chamada para GetURL, se
você deseja salvar em um arquivo. Exemplo:

HTTPObj.SaveFileTo = "c:\images\xanburzum.jpg"
  • TimeOut

A propriedade timeout determina
quanto tempo o componente deve esperar por uma resposta do servidor
HTTP. O tempo limite padrão é 60 segundos. Exemplo:

HTTPObj.TimeOut = 55
  • URL

A propriedade URL deve ser definida
para a URL que você desejar a solicitação. URLs devem ser precedidas
por http://. Exemplo:

HTTPObj.URL =
"http://www.Seu_dominio.com/scripts/update.asp"
  • UserAgent

A propriedade UserAgent permite
que o componente represente os navegadores, enviando um cabeçalho
UserAgent no pedido. Exemplo:

HTTPObj.UserAgent = "Mozilla Compatible (MS
IE 3.01 WinNT)"
  • Version

A propriedade versão indica a
versão interna do componente AspHTTP. Exemplo:

Response.Write " A versão do componente é "
& HTTPObj.Version

Componente e Métodos AspHTTP

Métodos Parâmetros Valor de retorno Descrição
GetURL None String GetURL retorna a resposta da solicitação
HTTP. Esse valor é um valor de String e o componente atualmente não
suporta valores de retorno binários como imagens GIF ou JPEG.
AddExtraHeader String None Adiciona um cabeçalho HTTP personalizado ao pedido.
Cabeçalhos personalizados podem incluir cabeçalhos navegador simulado
como cabeçalhos IE resolução do monitor.

HTTPObj.AddExtraHeader

(“Cookie: ASPSESSIONID=EKKDDPSDKCCPZRNA; path=/kb”)

ClearExtraHeaders None None Limpa os cabeçalhos de solicitação HTTP que foram
criados usando AddExtraHeader.
GetHeader String String Pega  o valor de um cabeçalho específico após GetURL
ser  chamado. Se vários cabeçalhos têm o mesmo valor GetHeader
retorna o primeiro. Para pesquisar todos os cabeçalhos. Exemplo:

strCookie = HTTPObj.GetHeader(“Set-Cookie”)

Você poderia, então, nas chamadas subseqüentes devolver o mesmo
cookie do seguinte modo:

if strCookie <> “” then

HTTPObj.AddExtraHeader “Cookie: ” & strCookie
end if

GetHeaders None String Retorna todos os valores do cabeçalho para análise
manual. Header CrLf valores são separados.
GetHREFs None Variant array of Strings Após uma chamada para GetURL, você pode chamar GetHREFs
para analisar qualquer tag <a href=””> no HTML. GetHREFs
retorna uma matriz de variante de String que você ainda pode analisar ou
mostrar.
URLDecode strValue String Decodifica uma seqüência de URL encoded
URLEncode strValue String Codifica uma string para um valor de URL legal.
Exemplo:

HTTPObj.URL = “http://www.teste.com.br?
& HTTPObj.URLEncode(“avalue= Este é um valor com espaços “)

Resgatando dados de uma URL

<%
' Cria uma instância do controle
Set AspHTTP = Server.CreateObject("AspHTTP.Conn")
' Informa a URL da página a ser consultada
AspHTTP.Url = "http://www.asphttp.com.br/asphttp.asp"
' Resgada o resultado
str_Resultado = AspHTTP.GetURL
' Tira o objeto da memória
Set AspHTTP = Nothing
' Imprime o valor resgatado na tela.
Response.Write str_Resultado%>

Postando dados para uma URL

<%
' Cria uma instância do controle
Set AspHTTP = Server.CreateObject("AspHTTP.Conn")
' Informa a URL da página a ser consultada
AspHTTP.Url = "http://www.asphttp.com.br/asphttp.asp"
' Envia os dados para a página
AspHTTP.PostData =
"campo1=Valor1&campo2=Valor2&campo3=Valor3&campo4=Valor4"
' Informa que o método da consulta
AspHTTP.RequestMethod = "POST"
' Resgada o resultado
str_Resultado = AspHTTP.GetURL
' Tira o objeto da memória
Set AspHTTP = Nothing
' Imprime o valor resgatado na tela.
Response.Write
str_Resultado%>

Mais informações:
http://www.serverobjects.com/products.html

Qualquer dúvida ou comentário, fique à vontade!