O site dos Correios disponibiliza gratuitamente um otimo servico para busca online de CEPs.Porem, essa e a unica forma de acessa-lo: via pagina HTML.Nao existe, nem e exposta, nenhuma API que facilite a integracao desse servico com outras aplicacoes.Para possibilitar esse tipo de integracao, criei o busca-cep-java-client que nada mais e que um componente Java (jar) cuja API abstrai a complexidade de:Fazer a requisicao HTTP (GET) passando os parametros necessarios 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 faco e simular um usuario que entra na pagina de busca, preenche e posta o form. Depois, ja na tela de resultados, percorro o HTML retornado em busca da tabela com os dados de CEP retornados.O trecho de codigo abaixo mostra o quao simples e a utilizacao da API:// Obtem uma instancia de CEPServiceCEPService buscaCEP = CEPServiceFactory.getCEPService();// Obtem um CEP pelo numeroCEP cep = buscaCEP.obtemPorNumeroCEP(13084440);// Obtem todos os CEPs que contem "Flordalisa" no logradouroList<CEP> ceps = buscaCEP.obtemPorEndereco("Flordalisa");Para mais detalhes em como utilizar esse componente, sugiro dar uma olhada nos testes unitarios.Todo o codigo fonte tambem esta disponivel no Github.Alem disso, publiquei a versao 1.1 do componente num repositorio Maven (tambem no Github).Para quem usa essa ferramenta basta alterar o pom.xml para incluir o repositorio:<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 dependencia: <dependency> <groupId>org.talesolutions</groupId> <artifactId>busca-cep-client</artifactId> <version>1.1</version> </dependency>Consideracoes FinaisO busca-cep-client ajuda a integrar funcionalidades de busca de CEPs a aplicacoes Java. Principalmente porque dispensa a criacao de uma base de CEPs local e como e so uma facade para o servico oficial dos Correios temos a "garantia" de estarmos sempre acessando dados atuais e corretos.A principal desvantagem e a dependencia da disponibilidade e formato desse servico - alto acoplamento. Se o site dos Correios sair do ar sua aplicacao certamente sera impactada. Alem disso, como os dados de CEPs sao extraidos de uma pagina HTML, qualquer mudanca no markup gerado afetara o funcionamento do componente. No Google IO 2012 foi lancado (por enquanto so para trusted testers) o Google Cloud Endpoints.E um novo servico do GAE que facilita (e muito) a publicacao de APIs RESTful ou JSON RPC.Na verdade as facilidades vao muito alem do servidor. Foi incorporado no GPE (Google Plugin para Eclipse) um "gerador" que dada uma API, gera o codigo necessario para acessa-la de clientes: Android (Java) e/ou iOS (objective C). Alem disso tambem e possivel acessar os servicos via javascript usando o Google APIs Client Library for Javascript (mesma biblioteca utilizada para utilizacao das APIs Google).Para testar esse novo servico, me inscrevi no programa de trusted testers e criei uma aplicacao que expoe uma API REST para busca de CEPs - usando uma biblioteca Java para busca de CEPs que criei um tempo atras.A aplicacao possui apenas uma unica classe: CepEndpoint. O gist abaixo mostra como o codigo e simples e como algumas simples anotacoes sao suficientes para publicar um endpoint composto por alguns servicos.Loading ....Para testar a API publicada pode-se usar o Google APIs Explorer ou o "clientzinho web"