«

»

Nov 15

Print this Post

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 webservicemethod 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 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!

by Kevin Schmidt
Versão em inglês: Adobe ColdFusion Cookbook

Permanent link to this article: https://ensina.me/coldfusion/usando-um-webservice-para-receber-cotacoes-de-acoes/

Leave a Reply