Tuesday, April 24, 2007

Utilizando WebServices para buscar cotação de moeda - Currency Exchange

Imaginem uma aplicação para compor o custo de um veículo. Todos sabem que dentro de um veículo existem centenas de peças e essas peças podem ser compradas em diferentes países. Por exemplo, podemos comprar o motor 2.0 do veículo na Inglaterra, os pneus no Brasil, os vidros no Japão e etc. No final o preço do carro custa 2.000 libras + 500 reais + 300 ienes + etc ...
Como todos sabemos o ($) dollar americano é uma moeda de uso internacional, válida em qualquer lugar do mundo.
Na aplicação preciso converter todos os preços para a moeda dollar($), logo para composição do preço do meu carro terei que pesquisar a cotação atual das moeda em relação ao dollar e inserir manualmente cada valor, assim convergendo o preço para a moeda americana.

Para facilitar a vida do usuário, posso sugerir na aplicação o valor da cotação da moeda feita em tempo real. Como ? Utilizando um webservices.
Pesquisando na internet descobri um serviço que nos fornece esse serviço de câmbio, a descrição do serviço segue abaixo:
http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl?

Para que utiliza Java, mais especificamente a IDE eclipse, segue um simples tutorial
OBS: Você deve possuir no eclipse o plugin WTP que fornece suporte a web services.
http://www.eclipse.org/webtools/

1) Crie um projeto simples no Eclipse
2) Crie um Web Service Client
File --> New --> Others --> Web Services --> Web Service Client

3)Adicione o endereço do wsdl em Service Definition: http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl?
Clica em Ok.
Verifique se o eclipse gerou o pacote net.xmethods.www.sd.CurrencyExchangeService_wsdl

Com as classes:

CurrencyExchangeBindingStub
CurrencyExchangePortType
CurrencyExchangePortTypeProxy
CurrencyExchangeService
CurrencyExchangeServiceLocator

Como o eclipse gerou o stub, proxy, locator e interfaces de serviço, ficou bem fácil.

4) Crie um classe simples com um método main

public static void main(String[] args) throws ServiceException, RemoteException{
// instancia o service locator
CurrencyExchangeServiceLocator currencyExchangeServiceLocator = new CurrencyExchangeServiceLocator();
// pega a interface de servico
CurrencyExchangePortType portType = currencyExchangeServiceLocator.getCurrencyExchangePort();
// chama o serviço de conversão
System.out.println("Hoje o 1 dollar custa " + portType.getRate("united states", "brazil") + " reais");
System.out.println("Hoje o 1 euro custa " + portType.getRate("Euro", "brazil") + " reais");
}
Saída no console:

Hoje o 1 dollar custa 2.0401 reais
Hoje o 1 euro custa 2.778 reais


Com uma solução bem simples você consegue criar um cliente para um serviço que certamente irá agregar algum valor ao software.

Segue a lista de países que vc poderá utilizar a conversão das moedas:

afghanistan albania algeria andorra andorra angola argentina aruba australia austria
bahrain bangladesh barbados belgium belize bermuda bhutan bolivian botswana brazil
england united kingdom uk great britain brunei burundi cambodia canada cape verde
cayman islands chile china colombia comoros costa rica croatia cuba cyprus czech republic
denmark dijibouti dominican republic netherlands east caribbean ecuador egypt el salvador
estonia ethiopia euro falkland islands fiji finland france gambia germany ghana
gibraltar greece guatemala guinea guyana haiti honduras hong kong hungary iceland
india indonesia iraq ireland israel italy jamaica japan jordan kazakhstan kenya
korea kuwait laos latvia lebanon lesotho liberia libya lithuania luxembourg
macau macedonia malaga malawi kwacha malaysia maldives malta mauritania mauritius
mexico moldova mongolia morocco mozambique myanmar namibia nepal new Zealand nicaragua
nigeria north korea norway oman pakistan panama papua new guinea paraguay peru
philippines poland portugal qatar romania russia samoa sao tome saudi arabia seychelles
sierra leone singapore slovakia slovenia solomon islands somalia south africa spain
sri lanka st helena sudan suriname swaziland sweden switzerland syria taiwan tanzania
thailand tonga trinidad tunisia turkey united states us usa uae united arib emirates uganda
ukraine uzbekistan vanuatu venezuela vietnam yemen yugoslavua zambia zimbabwe

2 comments:

LEANDRO said...

nao estou conseguindo,utilizar este webService pois da erro no serverDefinition no wizard ele nem deixa eu criar o webservice,segui a risca seu exemplo mas ele me diz:
The server definition is selected is invalid.
O que pode ser ?

Anonymous said...

wassup rafatabosa.blogspot.com admin found your blog via yahoo but it was hard to find and I see you could have more visitors because there are not so many comments yet. I have found site which offer to dramatically increase traffic to your blog http://mass-backlinks.com they claim they managed to get close to 4000 visitors/day using their services you could also get lot more targeted traffic from search engines as you have now. I used their services and got significantly more visitors to my blog. Hope this helps :) They offer most cost effective services to increase website traffic at this website http://mass-backlinks.com