Alguem sabe como fazer ??? como encontrar verificar via JAVA nos correios c um CEP é valido ??
Pronto, segue abaixo, a minha solução, em 2 formatos,
1° em Query String funciona em sua plenitude, e não se faz necessário nenhuma biblioteca adcional, funciona apenas com as APIs basicas do java
2° em XML onde se faz necessario o uso das bibliotecas dom4j-1.6.1.jar, contida na pasta lib
utiliza para consulta o site => http://www.republicavirtual.com.br/cep/exemplos.php
exemplo de uso
[code]import org.lavieri.modelutil.cep.WebServiceCep;
import org.lavieri.modelutil.cep.CepSearchEngineByQueryString;
/**
Teste via Query String
@author Tomaz Lavieri
*/
public class TesteQueryString {
public static void main(String[] args) {
//Faz a busca para o cep 13.345-325
//A ferramenta de busca ignora qualquer caracter que não seja número.
WebServiceCep cep = CepSearchEngineByQueryString.searchCep(“13.345-325”);
//Apenas o procedimento acima é necessario para obter os dados do site.
//...
//Imprimindo as informações dentro da variavel cep no console.
//caso a busca ocorra bem, imprime os resultados.
if (cep.wasSuccessful()) {
System.out.println("Cep: "+cep.getCep());
System.out.println("Logradouro: "+cep.getLogradouroFull());
System.out.println("Bairro: "+cep.getBairro());
System.out.println("Cidade: "+
cep.getCidade()+"/"+ cep.getUf());
//caso haja problemas imprime as exceções.
} else {
System.out.println("Erro número: " + cep.getResulCode());
System.out.println("Descrição do erro: " + cep.getResultText());
if (cep.getException() != null)
cep.getException().printStackTrace() ;
}
}
}[/code]
Interface WebServiceCep.java segue abaixo (que é o resultado da busca no site)
[code]package org.lavieri.modelutil.cep;
/**
Interface de consulta contendo os dados encapsulados da busca no site
<a href=“http://www.republicavirtual.com.br ”
target="_blank">republicavirtual.com.br.
Consulte as classes de Search Engine {@link CepSearchEngineByQueryString}
e {@link CepSearchEngineByXML}, para saber como recuperar os
dados do CEP do site.
Last Revision: 01/10/2009 (US Data)
@see CepSearchEngineByQueryString
@see CepSearchEngineByXML
@see SearchEngineResults
@author Tomaz Lavieri
@since 01/10/09
@version 1.01
/
public interface WebServiceCep {
/ *
/
public boolean wasSuccessful();
/ *
/
public boolean isCepNotFound();
/ *
/
public boolean hasException();
/ *
/
public Exception getException();
/ *
Informa o bairro
@return {@link String} contendo o nome bairro
/
public String getBairro();
/ *
Informa a cidade
@return {@link String} contendo o nome da Cidade
/
public String getCidade();
/ *
Informa a Unidade Federativa
@return {@link String} contendo o nome da Unidade Federativa
/
public String getUf();
/ *
Informa o logradouro.
@return {@link String} contendo o nome do Logradouro
/
public String getLogradouro();
/ *
Informa o logradouro junto com o tipo de logradouro.
@return {@link String} contendo o tipo de Logradouro + nome do Logradouro.
/
public String getLogradouroFull();
/ *
Informa o tipo do logradouro.
@return {@link String} contendo o tipo de logradouuro.
/
public String getLogradouroType();
/ *
Informa o cep.
@return {@link String} contendo o cep.
*/
public String getCep();
}[/code]
A maneira correta é comprando a base de dados deles. Outra maneira é procurar por alguém que disponibiliza algum banco grátis(em geral desatualizado) e usar no seu programa.
Até!
Acredito que dê pra fazer algo tipo um Curl do php. Desta maneira eu já fiz (em php).
Já vi uma aplicação em java que envia torpedo de celular utilizando por traz a pagina de envio de torpedos dos sites das operadoras.
Completando a informação do meu post:
http://www.correios.com.br/servicos/cep/dne.cfm
Acho que serviços de e-commerce como o da locaweb já fornecem um serviço de busca de cep.
Até!
Lavieri
Janeiro 8, 2009, 10:03pm
#5
Achei esse link => http://cep.maneh.org/download.php?maneh/db-mysql
com base de dados de 2004 segundo o site… =/
correios FDP, devia ter um .xml pra disponibilizar isso
Lavieri
Janeiro 8, 2009, 10:09pm
#6
tb econtrei esse range de CEP por região ^^, ta em PHP mais é legivel a qualquer um …
[code]<?php
$ceps[acre_capital] = “69900/69920”;
$ceps[acre_interior] = “69921/69999”;
$ceps[alagoas_capital] = “57000/57099”;
$ceps[alagoas_interior] = “57100/57999”;
$ceps[amapa_capital] = “68900/68929”;
$ceps[amapa_interior] = “68930/68999”;
$ceps[amazonas_capital] = “69000/69099”;
$ceps[amazonas_interior] = “69100/69899”;
$ceps[bahia_capital] = “40000/44470”;
$ceps[bahia_interior] = “44471/48499”;
$ceps[ceara_capital] = “60000/61939”;
$ceps[ceara_interior] = “61940/63999”;;
$ceps[df_capital] = “70000/73699”;
$ceps[espiritosanto_capital] = “29000/29184”;
$ceps[espiritosanto_interior] = “29185/29999”;
$ceps[goias_capital] = “74000/75259”;
$ceps[goias_interior] = “75260/76999”;
$ceps[maranhao_capital] = “65000/65099”;
$ceps[maranhao_interior] = “65100/65999”;
$ceps[matogrosso_capital] = “78000/78169”;
$ceps[matogrosso_interior] = “78170/78899”;
$ceps[matogrossodosul_capital] = “79000/79124”;
$ceps[matogrossodosul_interior] = “79125/79999”;
$ceps[minasgerais_capital] = “30000/34999”;
$ceps[minasgerais_interior] = “35000/39999”;
$ceps[para_capital] = “66000/67999”;
$ceps[para_interior] = “68000/68899”;
$ceps[paraiba_capital] = “58000/58099”;
$ceps[paraiba_interior] = “58100/58999”;
$ceps[parana_capital] = “80000/83939”;
$ceps[parana_interior] = “83940/87999”;
$ceps[pernambuco_capital] = “50000/54799”;
$ceps[pernambuco_interior] = “54780/56999”;
$ceps[piaui_capital] = “64000/64099”;
$ceps[piaui_interior] = “64100/64999”;
$ceps[riodejaneiro_capital] = “20000/24799”;
$ceps[riodejaneiro_interior] = “24780/28999”;
$ceps[riograndedonorte_capital] = “59000/59149”;
$ceps[riograndedonorte_interior] = “59150/59999”;
$ceps[riograndedosul_capital] = “90000/91999”;
$ceps[riograndedosul_interior] = “92000/99999”;
$ceps[rondonia_capital] = “78900/78924”;
$ceps[rondonia_interior] = “78925/78999”;
$ceps[roraima_capital] = “69300/69339”;
$ceps[roraima_interior] = “69340/69399”;
$ceps[santacatarina_capital] = “88000/88179”;
$ceps[santacatarina_interior] = “88180/89999”;
$ceps[saopaulo_capital] = “01000/09999”;
$ceps[saopaulo_interior] = “10000/19999”;
$ceps[sergipe_capital] = “49000/49099”;
$ceps[sergipe_interior] = “49100/49999”;
$ceps[tocantins_capital] = “77000/77299”;
$ceps[tocantins_interior] = “77300/77999”;
$ecep = explode("/", $ceps[$_POST[estado]]);
$error = 0;
if($_POST[cep] < $ecep[0] OR $_POST[cep] > $ecep[1]){
$error++;
}
?>[/code]
Lavieri
Janeiro 8, 2009, 10:14pm
#7
Eu acho que nem precisa disso.
Se souber trabalhar com COOKIES em java deve dar pra fazer igual ao php. Só utilizar o cookie de pesquisa cep do correio e pegar o retorno da pesquisa (cookie tambem). Nunca trabalhei com isso em java, só em php. Estou começando jsp agora.
Fica lento e se o site dos correios estiver fora nao roda.
Bom, é uma opção.
Apesar da informação dos ceps ser de domínio público, o serviço de catalogar e manter atualizado dos correios não. Utilizar o serviço de busca deles por alguma maneira que não seja do próprio site deles é ilegal.
Mas não que muitos pensem nisso mesmo.
Até!
Lavieri
Janeiro 9, 2009, 10:01am
#11
[quote=rvcabral]eis a solução…
http://www.republicavirtual.com.br/cep/codigos.php
abraços
[/quote]
thanks!!! vlw mesmo! salvou a patria ^^
cara eu tenho uma funcaozinha aki que valida apenas a faixa de valores por regex mesmo… soh nao esta em java, mas esta simples de adaptar…se ajudar:
function cep ($uf,$cep) {
$cep=self::_toNumber($cep);
$uf=strtoupper ($uf);
if ($uf=='SP') $regex = '/^([1][0-9]{3}|[01][0-9]{4})' . '[0-9]{3}$/';
else if ($uf=='RJ') $regex = '/^[2][0-8][0-9]{3}' . '[0-9]{3}$/';
else if ($uf=='MS') $regex = '/^[7][9][0-9]{3}' . '[0-9]{3}$/';
else if ($uf=='MG') $regex = '/^[3][0-9]{4}' . '[0-9]{3}$/';
else if ($uf=='MT') $regex = '/^[7][8][8][0-9]{2}' . '[0-9]{3}$/';
else if ($uf=='AC') $regex = '/^[6][9]{2}[0-9]{2}' . '[0-9]{3}$/';
else if ($uf=='AL') $regex = '/^[5][7][0-9]{3}' . '[0-9]{3}$/';
else if ($uf=='AM') $regex = '/^[6][9][0-8][0-9]{2}' . '[0-9]{3}$/';
else if ($uf=='AP') $regex = '/^[6][89][9][0-9]{2}' . '[0-9]{3}$/';
else if ($uf=='BA') $regex = '/^[4][0-8][0-9]{3}' . '[0-9]{3}$/';
else if ($uf=='CE') $regex = '/^[6][0-3][0-9]{3}' . '[0-9]{3}$/';
else if ($uf=='DF') $regex = '/^[7][0-3][0-6][0-9]{2}' . '[0-9]{3}$/';
else if ($uf=='ES') $regex = '/^[2][9][0-9]{3}' . '[0-9]{3}$/';
else if ($uf=='GO') $regex = '/^[7][3-6][7-9][0-9]{2}' . '[0-9]{3}$/';
else if ($uf=='MA') $regex = '/^[6][5][0-9]{3}' . '[0-9]{3}$/';
else if ($uf=='PA') $regex = '/^[6][6-8][0-8][0-9]{2}' . '[0-9]{3}$/';
else if ($uf=='PB') $regex = '/^[5][8][0-9]{3}' . '[0-9]{3}$/';
else if ($uf=='PE') $regex = '/^[5][0-6][0-9]{2}' . '[0-9]{3}$/';
else if ($uf=='PI') $regex = '/^[6][4][0-9]{3}' . '[0-9]{3}$/';
else if ($uf=='PR') $regex = '/^[8][0-7][0-9]{3}' . '[0-9]{3}$/';
else if ($uf=='RN') $regex = '/^[5][9][0-9]{3}' . '[0-9]{3}$/';
else if ($uf=='RO') $regex = '/^[7][8][9][0-9]{2}' . '[0-9]{3}$/';
else if ($uf=='RR') $regex = '/^[6][9][3][0-9]{2}' . '[0-9]{3}$/';
else if ($uf=='RS') $regex = '/^[9][0-9]{4}' . '[0-9]{3}$/';
else if ($uf=='SC') $regex = '/^[8][89][0-9]{3}' . '[0-9]{3}$/';
else if ($uf=='SE') $regex = '/^[4][9][0-9]{3}' . '[0-9]{3}$/';
else if ($uf=='TO') $regex = '/^[7][7][0-9]{3}' . '[0-9]{3}$/';
else return false;
if(!preg_match($regex,$cep)) return false;
return true;
}
Lavieri
Janeiro 9, 2009, 7:40pm
#13
pronto resolvido, vejam o arquivo atachado no 1° post
http://www.guj.com.br/posts/list/114510.java#618995
Lavieri
Janeiro 10, 2009, 6:05pm
#14
Adcionei ao post principal, o primeiro aqui dessa seguencia, os arquivos contendo a solução que fiz…
uma que utiliza o pacote dom4j-1.6.1.jar e outro que não depende de pacote algum e utiliza o link de query string para consultar os dados do site republicavirtual.com.br
com isso fica resolvido o problema de cep
veja esse link http://www.guj.com.br/posts/list/114510.java#618995
aqui o arquivo mais atual.