Manipulando Solicitações de HTTP em CF
A
tag
<CFHTTP>
é
uma ferramenta
de
uso geral
para
a criação
e
manipulação de
solicitações
dos
resultados HTTP retornados. Ele permite você
gerar
tipos
de solicitação
padrão
HTTP.
Você
pode usar
as
tags
<cfhttpparam>
incorporadas
para
especificar
cabeçalhos
de solicitação e
conteúdo
do corpo.
Quando
ColdFusion
recebe
uma resposta
a
um pedido
CFHTTP,
pode colocar
o
corpo
da resposta
(se
houver)
em
um arquivo ou
a
variável de cadeia
cfhttp.FileContent.
Se
o
corpo do texto
está
estruturado
como
um
conjunto
de resultados,
o ColdFusion
pode
colocar o
texto
do corpo
em
um objeto
de consulta.
Você
também pode
acessar
os valores
de
todos os cabeçalhos
retornados
e
especificar
como lidar com
status
de erro e
redirecionamentos,
e
especificar
um
tempo limite
para
evitar
pedidos
de
enforcamento.
O protocolo
HTTP
é
a
espinha dorsal da
World
Wide Web e
é
usado
para
cada transação
web.
Porque
a
tag
<CFHTTP>
pode
gerar
a
maioria dos tipos
de
solicitações,
que
proporciona
uma flexibilidade significativa.
Possíveis
usos
incluem:
- Interação com web sites dinâmicos e serviços que não estão disponíveis como serviços web. (Use a tag <cfinvoke> para acessar serviços web SOAP.)
- Obter o conteúdo de uma página HTML ou outro arquivo como uma imagem em um servidor web para uso em sua página CFML ou armazenamento em um arquivo.
- Enviar um pedido de seguro para um servidor especificando o protocolo https no atributo url.
- Utilizando o método POST para enviar um post estilo multipart / form-data a qualquer URL que pode lidar com esses dados e retornar resultados, inclusive os executáveis CGI ou mesmo páginas outros ColdFusion.
- Usando o método PUT para upload de arquivos para um servidor que não aceita solicitações FTP.
Esta
tag
pode,
e
para
pedidos
POST
e
PUT
deve,
ter
um corpo
que
contém marcas
cfhttpparam.
Se
essa marca
tem
tags
<cfhttpparam>,
ele
deve ter uma tag
</
CFHTTP>
no final.
Para usar
HTTPS
com
a tag
<CFHTTP>,
talvez
você precise
importar
manualmente
o
certificado
para
cada servidor
web
para
o keystore
do
JRE
que
o
ColdFusion
usa.
Este
procedimento não deve
ser
necessária se o
certificado
é assinado
(emitida)
por
uma autoridade
que
o
JSSE
(Java
Secure Sockets
Extension)
reconhece (por
exemplo,
Verisign),
isto é, se a autoridade de
assinatura é
no
cacerts
já.
No entanto, você
pode
precisar usar
o
procedimento
se
você estiver
emitindo
SSL
(secure
sockets layer)
certificados
de
si
mesmo.
Importar
manualmente
um
certificado:
- Ir para uma página no servidor SSL em questão.
- Dê um duplo clique no ícone de cadeado.
- Clique na guia Detalhes.
- Clique em Copiar para Arquivo.
- Selecione a opção base64 e salve o arquivo.
- Copie o arquivo CER em C: \ ColdFusion8 \ runtime \ jre \ lib \ security (ou qualquer JRE ColdFusion está usando).
- Execute o seguinte comando no mesmo diretório (keytool.exe está localizada em C: \ CFusionMX7 \ runtime \ jre \ bin):
keytool -import -keystore cacerts -alias giveUniqueName -file filename.cer
Exemplo:
<!--- Este
exemplo exibe
as
informações fornecidas
pelo
Designer
&
Developer
Center
XML
feed, http://www.adobe.com/desdev/resources/_resources.xml
Ver
http://www.adobe.com/desdev/articles/xml_resource_feed.html para mais
informações sobre
este
assunto. --->
<!---
Definir o endereço de
URL.
--->
<cfset
urlAddress="http://www..com/desdev/resources/_resources.xml">
<!--- Use
a
tag
<CFHTTP>
para
obter
o
conteúdo do arquivo
representado
por
urladdress.
Note
que
/>,
não é fim da tag, ele finaliza
esta
tag. --->
<cfhttp
url="#urladdress#" method="GET" resolveurl="Yes"
throwOnError="Yes"/>
<!---
Analisar
o XML
e
saída de
uma
lista de recursos.
--->
<cfset
xmlDoc =
XmlParse(CFHTTP.FileContent)>
<!--- Obter
a matriz
de
elementos
de
recursos, o
xmlChildren
do
XmlRoot.
--->
<cfset
resources=xmlDoc.xmlroot.xmlChildren>
<cfset
numresources=ArrayLen(resources)>
<cfloop
index="i"
from="1" to="#numresources#">
<cfset
item=resources[i]>
<cfoutput>
<strong><a
href=#item.url.xmltext#>#item.title.xmltext#</a></strong><br>
<strong>Autor</strong> #item.author.xmltext#<br>
<strong>Aplica-se
a
estes
produtos</strong><br>
<cfloop
index="i" from="4"
to="#arraylen(item.xmlChildren)#">
#item.xmlChildren[i].xmlAttributes.Name#<br>
</cfloop><br>
</cfoutput>
</cfloop>
Comentários
Postar um comentário
Participe, deixe seu comentário.