Usando um webservice para receber cotações de ações
Problema:
Dados de uma cotação de ações devem ser recuperados de um webservice e colocados em um formato que ColdFusion possa usar.
Solução:
ColdFusion permite desenvolvedores muito facilmente chamar um webservice passando argumentos para o serviço usando as tags <cfinvoke> e <cfinvokeargument>.
Explicação detalhada:
Antes de começar a trabalhar com webservices, um webservice aceitável deve ser achado. Para este exemplo o serviço de cotação de ações fornecido por WebServiceX será usado. (http://webservicex.net/stockquote.asmx?WSDL)
Esse webservice fornece o método GetQuote e aceita um símbolo de ações válido (stock ticker). Em retorno, um pacote XML é recebido com toda informação pertinente sôbre a ação retornada. As cotações têm um atraso de 20 minutos.
<cfset quotes = ArrayNew( 1 ) />
<cfset symbols = ["ADBE","LLY"] />
O código acima cria arrays de duas maneiras. Uma usando a função ArrayNew() e a outra usando a criação implícita que foi lançada com o ColdFusion 8.
O próximo passo é iterar sôbre o array de símbolos usando um loop array e chamando o webservice para cada símbolo. Este serviço emparticular permite apenas a passagem de um símbolo por vez.
<cfloop array="#symbols#" index="i">
<cfinvoke
webservice="http://www.webservicex.net/stockquote.asmx?WSDL"
method="GetQuote"
returnVariable="quote">
<cfinvokeargument name="symbol" value="#i#" />
</cfinvoke>
A tag <cfinvoke> recebe os atributos webservice, method e returnVariable. O atributo webservice é o URL do arquivo WSDL do webservice. O atributo method é o nome do método a chamar, neste caso, GetQuote. O atributo returnVariable especifica a variável para salvar o resultado retornado do webservice.
Afim de passar o argumento do símbolo requerido ao webservice, a tag <cfargument> é usada. Os atributos name e value são usados para especificar o nome do atributo do serviço, neste caso, symbol e o valor daquele atributo, neste caso, os dois símbolos ADBE e LLY.
Após o serviço ser chamado, o resultado precisa ser salvo no array de cotações, ao final do loop.
<cfset ArrayAppend( quotes, XMLParse( quote ) ) />
</cfloop>
O webservice retorna os dados em um formato XML, logo a função XMLParse é usada para criar um objeto ColdFusion XML.
Quandol o código é rodado e o array de cotações é exibido por um dump, fornece o seguinte resultado :
Mais uma vez ColdFusion torna uma tarefa que seria difícil, tal como chamar webservices, simples é fácil!
Versão em inglês: Adobe ColdFusion Cookbook
0 responses to “Usando um webservice para receber cotações de ações”