terça-feira, 29 de novembro de 2011

Consulta CEP

Ainda bem que o mundo vem evoluindo não apenas na questão tecnológica, mas também humana, social e ambiental, e hoje a palavra chave é respeito ao próximo em primeiro lugar e também ao meio ambiente. Claro que poderíamos assistir essa onda vinda de forma mais rápida, ou na mesma velocidade em que ocorrem as degradações, mas fazer o que? Ainda estamos em construção e temos muito o que aprender. Se você não está surfando nessa onda 'verde', melhor repensar na maneira que vem descartando as coisas, pois antigamente a frase mais falada era: o que deixaríamos para nossos herdeiros se continuássemos destruindo o mundo, agora ouvimos que será da nossa própria geração.

E o que isso tem a ver com Consulta CEP? Podemos dizer que 'reciclar' informação também é uma coisa boa e quase imprescindível nos nossos sistemas, é quase ecológico.  CEP ou Código de Endereçamento Postal é um numero que representa endereços quase completos, tecnicamente só falta o número da residência, pois o restante (rua, bairro, cidade), já possuímos. A questão é como programamos um mecanismo que nos retorne os dados de um endereço a partir deste código. A resposta: WebService.




Onde Encontrar?
A fonte original é o serviço de Correios e Telégrafos que disponibiliza a base de dados de CEP do Brasil, mas esse material é pago. Porém, a mesma base é disponibilizada no ‘mercado negro’, mas cá entre nós, vamos levar a sério essa onda verde, pirataria não. Restam então os serviços benevolentes, que claro possuem limites, mas para nosso teste com caráter didático funciona.

Um desses serviços encontra-se no site www.buscarcep.com.br, que permite certo numero de consultas por minuto.  É necessário registrar-se no site para obter uma chave de acesso ao sistema, e desta forma usufruir dos benefícios.

Como Programar
Já existem exemplos sobre esse serviço, e o que vamos fazer é programar uma SDT simplificar a interpretação do XML de retorno. Desta forma, tiramos um pouco a poeira de nosso cérebro programando tipos estruturados, que é bem legal, diga-se de passagem, e também ao invés de um External Object estaremos consumindo o WebService com HttpClient, de forma a explorar um pouco mais esse recurso.

Esse SDT, apresentado na Figura 1, irá receber as informações do WebService, e seus tipos e nomes devem ser respeitados no momento da construção.
 

Para a implementação utilizamos o exemplo do HttpClient (http://www.genexando.com/2011/11/geolocalizacao-pelo-ip-com-httpclient.html), que possibilita apontar e executar uma ação remota na web, obtendo a resposta que desejamos, e para obtermos essa resposta o que você precisa é passar os parâmetros adequados, algo semelhante ao que aparece abaixo.


cep=13211111&formato=xml&chave=1VUSS3sdDo0Wu0NAo/0dPO5nDkHuTX


Portanto, uma variável &HttpClient, de mesmo tipo, pode receber a seguinte programação.



&HttpClient.Host =  'www.buscarcep.com.br'

&HttpClient.Port = 80

     

&urlString = '?cep='

&urlString += &CEP

&urlString += '&formato=xml&chave=1VUSS3sdDo0Wu0NAo/0dPO5nDkHuTX.'



Não se esqueça de criar sua própria chave e substituir o valor 1VUSS3sdDo0Wu0NAo/0dPO5nDkHuTX. O parâmetro &CEP representa o valor do CEP que desejamos consultar.

Para realizar a consulta executamos o método Execute que acionará o WebService para obter os dados.

&HttpClient.Execute('GET', &urlString)



Finalmente utilizamos uma variável &sdt do mesmo tipo do SDT declarado anteriormente (figura 1), para obter de forma organizada as informações.

&sdt.FromXml(&HttpClient.ToString())     


Simples, o resto é leitura do valor da variável &sdt.

&Endereco   = &sdt.retorno.logradouro

&Bairro     = &sdt.retorno.bairro

&CidadeId   = &sdt.retorno.ibge_municipio

Observe que no &sdt existem muitas informações interessantes a serem exploradas, no mesmo processo apresentado anteriormente.

Conclusão

Em termos de programação acho que não poderia ser mais simples e interessante, e reforça um pouco mais os conceitos de HttpClient, WebService, SDT's e por ai vai.

Agora quanto à onda verde, infelizmente ainda temos situações que apontam ao contrário, para citar um exemplo vamos ao 'Congresso Nacional' onde nessa semana nossos lideres discutem e comemoram a 'articulação feliz' de um novo Código Florestal que entre outros absurdos, anistia as multas, até certa data, 'daqueles cidadãos ilustres' que degradaram indiscriminadamente, irresponsavelmente, mais do que devia. O pior não é isso, ainda temos que ouvir as declarações do relator do projeto que 'articulamos o melhor para o Brasil'.


Não me tome por ecológico radical, mas creio que de fato, essa onda ainda deve virar um tsunami para que se dê a atenção e importância necessária, ou melhor, que de fato o interesse coletivo de toda uma população venha a ser de fato articulado.

6 comentários:

Bruno Macedo disse...

Aproveitando, eu também disponibilizei no GXOpen um exemplo de busca de CEP.

http://www.gxopen.com/gxopen/servlet/projectinformation?851

Douglas Hamilton de Oliveira disse...

grande Bruno,
excelente dica!

veHagah disse...

Excelente Post! Gostei muito.

Implementar no meu sistema Imóvel!

Douglas Hamilton de Oliveira disse...

Obrigado

Douglas Hamilton de Oliveira disse...

Uma pequena correção para o gerador Java.

&HttpClient.Host = "www.buscarcep.com.br"
&HttpClient.BaseUrl = ""
&HttpClient.Port = 80

A propriedade BaseUrl deve ser programada com um valor vazio, caso contrário ocorre erro no retorno.

Anônimo disse...

Não me ajudou em nadaaaaaaaaaaaaaaaaaaaaaaaaaa...