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.