terça-feira, 16 de novembro de 2010

Consultar CEP - HTTPService

Blz?!

Depois de mais de 2 meses de inatividade desta vez ou mostrar aqui uma dica que um amigo (Felipe Cesarini) me passou. Esse post nada mais é que o Flex consumindo um Webservices de consulta de CEP no caso do site www.buscarcep.com.br/ (não conheço ninguém da empresa, não estou ganhando um centavo), é um serviço muito bacana e vale a pena dar uma olhada com mais atenção.

Faça o cadastro no site www.buscarcep.com.br/ e obter a chave de acesso.


Não me preocupei em fazer nenhuma grande validação antes de consumir o WS ou no retorno do mesmo o exemplo está preparado apenas para o caso "deu tudo certo", então recomendo se você for implementar isso na sua aplição de atenção ao tratamento de erros [;)]

Agora chega de enrolação, vamos lá!

Basta digitar o seu CEP e pressionar ENTER ou TAB, a chave de acesso deste exemplo só dá direito a 10 consultas por minuto então se não funcionar de primeira, aguarde um pouco.

import mx.managers.CursorManager;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;


[Bindable]
private var
  _uBucaCEP: HTTPService;

private function proCreationComplete(): void {
  // Iniciazila o serviço
  _uBucaCEP = new HTTPService();
  _uBucaCEP.method = 'POST';
  _uBucaCEP.addEventListener(ResultEvent.RESULT, proCEPResultHandler, false, 0, true);
  _uBucaCEP.addEventListener(FaultEvent.FAULT, proFaultEvent, false, 0, true);
  _uBucaCEP.resultFormat = 'e4x'; 
}

private function proNR_CEPFocusOut(): void {
  // Faz uma verificação simples antes de realizar a consulta
  if (eNR_CEP.length == 8 && !isNaN(parseInt(eNR_CEP.text))) {
    CursorManager.setBusyCursor();
    _uBucaCEP.url = 'http://www.buscarcep.com.br/?cep=' + eNR_CEP.text + '&formato=xml&chave=SUA_CHAVE_AQUI'
   _uBucaCEP.send();
  }
}

private function proCEPResultHandler(Evento: ResultEvent):void {
  var 
    _rResult: XMLList = new XMLList(new XML(Evento.result));
  
  CursorManager.removeAllCursors();
  if (eNR_CEP.length == 8){
    eNM_END.text = String(_rResult..bairro);
    eCD_CIDADE.text = String(_rResult..ibge_municipio);
    eNM_CIDADE.text = String(_rResult..cidade);
    eSG_ESTADO.text = String(_rResult..uf);
  } 
  else {
    eNM_END.text = '';
    eNM_BAIRRO.text = '';
    eCD_CIDADE.text = '';
    eNM_CIDADE.text = '';
    eSG_ESTADO.text = '';
  }
}

private function proFaultEvent(Evento: FaultEvent): void {
  CursorManager.removeAllCursors();
  Alert.show(Evento.message.toString());
}




Bons estudos e bom trabalho a todos.

Abraços

5 comentários:

eNM_END.text = String(_rResult..bairro);

Bem observado, mas com eu já havia dito, se for aplicar é bom revisar[;)]

Não foi necessário mas se precisar é simples


crossdomain.xml


< cross-domain-policy >
< allow-access-from domain="www.seusite.com" / >
< allow-access-from domain="ip" / >
< / cross-domain-policy >


[]´s

Postar um comentário

Twitter Delicious Facebook Digg Stumbleupon Favorites More