Porém, essa é a única forma de acessá-lo: via página HTML.
Não existe, nem é exposta, nenhuma API que facilite a integração desse serviço com outras aplicações.
Para possibilitar esse tipo de integração, criei o busca-cep-java-client que nada mais é que um componente Java (jar) cuja API abstrai a complexidade de:
- Fazer a requisição HTTP (GET) passando os parâmetros necessários e;
- Processar a resposta - extraindo os dados de CEP do HTML retornado.
Internamente utilizo a biblioteca HtmlUnit para auxiliar no Web Scraping. Basicamente o que eu faço é simular um usuário que entra na página de busca, preenche e posta o form. Depois, já na tela de resultados, percorro o HTML retornado em busca da tabela com os dados de CEP retornados.
O trecho de código abaixo mostra o quão simples é a utilização da API:
Para mais detalhes em como utilizar esse componente, sugiro dar uma olhada nos testes unitários.
Todo o código fonte também está disponível no Github.
Além disso, publiquei a versão 1.1 do componente num repositório Maven (também no Github).
Para quem usa essa ferramenta basta alterar o pom.xml para incluir o repositório:
E adicionar essa dependência:
A principal desvantagem é a dependência da disponibilidade e formato desse serviço - alto acoplamento. Se o site dos Correios sair do ar sua aplicação certamente será impactada. Além disso, como os dados de CEPs são extraidos de uma página HTML, qualquer mudança no markup gerado afetará o funcionamento do componente.
O trecho de código abaixo mostra o quão simples é a utilização da API:
// Obtém uma instância de CEPService CEPService buscaCEP = CEPServiceFactory.getCEPService(); // Obtém um CEP pelo número CEP cep = buscaCEP.obtemPorNumeroCEP(13084440); // Obtém todos os CEPs que contém "Flordalisa" no logradouro List<CEP> ceps = buscaCEP.obtemPorEndereco("Flordalisa");
Para mais detalhes em como utilizar esse componente, sugiro dar uma olhada nos testes unitários.
Todo o código fonte também está disponível no Github.
Além disso, publiquei a versão 1.1 do componente num repositório Maven (também no Github).
Para quem usa essa ferramenta basta alterar o pom.xml para incluir o repositório:
<repository> <id>Talesolutions</id> <url>https://raw.github.com/fabito/talesolutions-mvn-repo/master/</url> <snapshots> <enabled>true</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </repository>
E adicionar essa dependência:
<dependency> <groupId>org.talesolutions</groupId> <artifactId>busca-cep-client</artifactId> <version>1.1</version> </dependency>
Considerações Finais
O busca-cep-client ajuda a integrar funcionalidades de busca de CEPs à aplicações Java. Principalmente porque dispensa a criação de uma base de CEPs local e como é só uma façade para o serviço oficial dos Correios temos a "garantia" de estarmos sempre acessando dados atuais e corretos.A principal desvantagem é a dependência da disponibilidade e formato desse serviço - alto acoplamento. Se o site dos Correios sair do ar sua aplicação certamente será impactada. Além disso, como os dados de CEPs são extraidos de uma página HTML, qualquer mudança no markup gerado afetará o funcionamento do componente.