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.