Desenvolvi um webservice de cep gratuito!
Para quem quizer usar em suas aplicações acesse o endereço http://www.maniezo.com.br e clique no chamado ao lado esquerdo “Webservice de CEP”.
Webservice de CEP
42 Respostas
Maniezo,
bela iniciativa, uma boa alternativa ao webservice do próprio correio, que é pago…
parabéns…

A iniciativa é legal e talz, mas você têm autorização do correio para revender as informações de CEP?
Mesmo não concordando com o Correiro, tenho que alerta-lo que você precisa de uma autorização dos correios para fazer isso.
Putz… cara é verdade não pensei nisso! Talvez não possa disponibilizar esse webservice!!!
Vo analizar valew!!!
Cara, este tipo de informação é de domínio público.
Qualquer pessoa pode sair por ai coletando os dados de todos os CEPs, ou se basear num banco de dados de alguem.
Se você pegou estes dados dos Correios e existe uma proibição, então sim é ilegal.
Testei aqui e ache mto bom(e útil)!Mas se a base era a dos correios vc terá q pagar para eles… é uns 50 mangos né?
Tentei gerar um cliente em Java com Axis e com o JDeveloper e dá o seguinte erro:
JDev 10g 10.1.3
model error: type "{http://www.w3.org/2001/XMLSchema} array" not found
Axis 1.3
java.io.IOException: Type {http://www.w3.org/2001/XMLSchema}array is referenced
but not defined.
Netbeans WebServiceClient
Error Parsing WSDL. Please see the log file for details. Exception = modeler error: invalid entity name: "array" (in namespace: "http://www.w3.org/2001/XMLSchema")
Ve se vcs conseguem agora… removi o array e deixei string so que agora tera que tratar depois de pegar a informação estão divididas coom “tipo#rua#bairro#etc…”
Valew
Gerou o cliente, mas:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: org.xml.sax.SAXParseException: Character conversion error: "Malformed UTF-8 char -- is an XML encoding declaration missing?" (line number may be too low).
faultActor:
faultNode:
faultDetail:
A iniciativa é legal e talz, mas você têm autorização do correio para revender as informações de CEP?Mesmo não concordando com o Correiro, tenho que alerta-lo que você precisa de uma autorização dos correios para fazer isso.
Nã sei se alguem se tocou, mas existe um webservice do correio pronto para consulta do CEP. Ele é o que está por trás da integração para o Office que eles anunciam no site deles ( veja http://www.correios.com.br/servicos/cep/cep_loc_log.cfm , no link “Veja como consultar o CEP no OFFICE da Microsoft”).
Desenvolvi uma bibliteca que executa a consulta e retorna um POJO com dados do cep, caso encontrado. Não sei se, neste caso, haveria necessidade de pagamento aos correios, já que:
- Não estou copiando a base dos correios
- Estou usando o acesso público que a ECT oferece a usuários do Office.
Pensando bem, só o ponto 2) já me daria razão em ter direito de acesso ao serviço, já que qualquer outra opção configurar-se-ia em uma vantagem ilegal para a Microsoft - já que seu produto seria o único “credenciado” a fazer consultas.
Sei q é pedir muito psevestre, mas tem como vc disponibilizar esta biblioteca?
Maniezo, estou com o seguinte problema na hora de usar seu webservice:
Exception in thread "main" AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: org.xml.sax.SAXParseException: Invalid byte 2 of 3-byte UTF-8 sequence.
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXParseException: Invalid byte 2 of 3-byte UTF-8 sequence.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:236)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:215)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:386)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:316)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1810)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2765)
at org.apache.axis.client.Call.invoke(Call.java:2748)
at org.apache.axis.client.Call.invoke(Call.java:2424)
at org.apache.axis.client.Call.invoke(Call.java:2347)
at org.apache.axis.client.Call.invoke(Call.java:1804)
at br.com.maniezo.www.Traz_cep_partesBindingStub.traz_cep(Traz_cep_partesBindingStub.java:114)
at br.com.maniezo.www.Traz_cep_partesPortTypeProxy.traz_cep(Traz_cep_partesPortTypeProxy.java:45)
at br.com.maniezo.www.Teste.main(Teste.java:14)
Sabe o que pode ser?
Implementei um metodo no webservice de calculo de frete!
Quem quizer usar esta a disposição no www.maniezo.com.br o webservice agora de cep e calculo de frete gratuito!
Leandro Maniezo
www.maniezo.com.br
Não seria um problema de caracter especial tipo acento no
“Invalid byte 2 of 3-byte UTF-8 sequence.” ?
E os acentos? Não estão vindo… Ele corta a letra que tem acento.
Aproveitando…
Parabéns pela criação.
E… será que eu posso ser preso por usar esse seu webservice em aplicação comercial?
A meu ver nao tem nada de mais… Vc apenas deve ta usando recursos HTML/HTTP pra pegar o texto resultando quando se insere um CEP no site dos correios…
Cara, este tipo de informação é de domínio público.Verdade, a informação é de domínio público - MAS a base de dados que ele utilizou (aquele access safado do correio) não é.
Qualquer pessoa pode sair por ai coletando os dados de todos os CEPs, ou se basear num banco de dados de alguem.
Se você pegou estes dados dos Correios e existe uma proibição, então sim é ilegal.
Nã sei se alguem se tocou, mas existe um webservice do correio pronto para consulta do CEP. Ele é o que está por trás da integração para o Office que eles anunciam no site deles ( veja http://www.correios.com.br/servicos/cep/cep_loc_log.cfm , no link “Veja como consultar o CEP no OFFICE da Microsoft”).Quando está no ar esse “serviço” para o office é bem instável e corre o risco de sair do ar de vez. Eu, pessoalmente, não confio nele quando penso numa aplicação comercial. O fato é quê é melhor pagar o serviço do correio mesmo, tem gente lá pra atuliazar o cadastro e tal e todo ano eles comercializam um cd com essas atualizações.
Se todo mundo saísse redesenvolvendo esses serviços acabaríamos com uma zona total - que é exatamente o contrário da proposta do SOA e web services.
A título de experiência e estudo, com certeza, valeu a intenção. Parabéns cara.
Cara, este tipo de informação é de domínio público.Verdade, a informação é de domínio público - MAS a base de dados que ele utilizou (aquele access safado do correio) não é.
Qualquer pessoa pode sair por ai coletando os dados de todos os CEPs, ou se basear num banco de dados de alguem.
Se você pegou estes dados dos Correios e existe uma proibição, então sim é ilegal.
Acho que nao tem nada a ver nao.
Informaçao de dominio publico nao pode ser transformada em propriedade privada nao.
Tenho um servico de hospedagem na locaweb. Eles tb fornecem um webservice … =)
Acho que nao tem nada a ver nao.Informaçao de dominio publico nao pode ser transformada em propriedade privada nao.
Bem, se fosse vc a ter despesas contratando gente pra levantar e inputar esses dados, com certeza, vc mudaria de opinião.
A questão aqui não é a informação, ela é de domínio público e ponto final. A questão é que vc, utilizando ESSA base do correios, está utilizando o produto final de um trabalho que não foi pago nem muito menos “criado” por vc. Acredito que vc não vai digitar tudo isso de novo certo? Nem vai contratar gente pra fazer isso pra vc né?
Na verdade todos nós pagamos por esse trabalho. Afinal o correio (ou Empresa de Correios e Telégrafos - ECT) é uma empesa estatal, certo?
Na verdade todos nós pagamos por esse trabalho. Afinal o correio (ou Empresa de Correios e Telégrafos - ECT) é uma empesa estatal, certo?Correto. Mas então vc quer dizer que por ser estatal ela não tem direito a registrar copyright de seus produtos? Pelo seu raciocínio poderíamos então “copiar” qq sistema do estado e utilizá-lo: já pagamos por eles né? Isso é só minha opinião. Esse assunto não tem fim e vamos acabar discutindo privatização (que não tem nada a ver com o tópico).
O governo pode fazer o que quiser. Só não faz sentido usar esta justificativa de que “não foi você quem pagou” neste caso, concorda? 
O governo pode fazer o que quiser. Só não faz sentido usar esta justificativa de que “não foi você quem pagou” neste caso, concorda? :Phmmm, concordo. Não vejo como justificativa mas tudo bem.
Registrar produto vc criou ou cobrar por um servico é uma coisa.
Querer direitos sobre algo publico é completamente diferente.
Vc pode copiar os dados de um livro do Machado de Assis que é publico e montar outro e vender sem ter que pagar niguem, já q é de dominio publico.
Registrar produto vc criou ou cobrar por um servico é uma coisa.Vai querer discutir privatização? O assunto do post é outro, off-topic. Existem n kapa pi exemplos no mundo pra dizer que uma idéia não se aplica - contudo, cabe a cada um que as tem, defendê-las (cadê a cerveja?)
Querer direitos sobre algo publico é completamente diferente.
O quê importa é que o cara fez uma parada bacana.
Eu gostaria de testar seu webservice… seria possível??
Ps.: Alguem sabe porque quando tento validar o .wsdl de cep do endereço:
http://www.byjg.com.br/site/webservice.php/ws/cep?WSDL
retorna erros no arquivo? sendo que consigo fazer o teste via http e o retorno é Ok?
att. Jonas
Qual foi a mensagem de erro?
O WebService de CEP também funciona como RESTFul
Você pode fazer um GET em
http://www.byjg.com.br/site/webservice.php/ws/cep?httpmethod=obterlogradouroauth
Ainda esta em funcionamento e esta dando manutenção?
Fui testar no site e deu erro!
Warning: include(…/webservice/funcoes.php) [function.include]: failed to open stream: No such file or directory in /home/holus/public_html/maniezo/cep.php on line 3Warning: include(…/webservice/funcoes.php) [function.include]: failed to open stream: No such file or directory in /home/holus/public_html/maniezo/cep.php on line 3
Warning: include() [function.include]: Failed opening ‘…/webservice/funcoes.php’ for inclusion (include_path=’.:/usr/lib/php:/usr/local/lib/php’) in /home/holus/public_html/maniezo/cep.php on line 3
Warning: require_once(…/webservice/nusoap.php) [function.require-once]: failed to open stream: No such file or directory in /home/holus/public_html/maniezo/cep.php on line 5
Fatal error: require_once() [function.require]: Failed opening required ‘…/webservice/nusoap.php’ (include_path=’.:/usr/lib/php:/usr/local/lib/php’) in /home/holus/public_html/maniezo/cep.php on line 5
E eu criei um para rastreamento de encomendas:
http://www.guj.com.br/java/267546-webservice-de-rastreamento-de-encomendas-dos-correios
Tente o http://grepcep.com
Só mais o do google maps api! Não tem que se cadastrar, não tem que assinar, você pode usar tanto no cliente java como no javascript, enfim, é perfeito!
Pra ver como é simples, um exemplo de cliente java para uma consulta de endereco ao google maps:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
public class ClientGoogleMaps
{
public static void main(String[] args)
{
new ClientGoogleMaps().google();
}
private void google()
{
try
{
HttpURLConnection conn = null;
// solicitacao GET
String url = "http://maps.googleapis.com/maps/api/geocode/json";
String address = "Avenida Jose Luiz Ferraz";
String sensor = "false";
String payload = URLEncoder.encode("address","UTF-8") + "=" +
URLEncoder.encode(address, "UTF-8") + "&" +
URLEncoder.encode("sensor", "UTF-8")+ "="+
URLEncoder.encode(sensor, "UTF-8");
System.out.println(payload);
conn = get_connection(url+"?"+payload, "GET");
conn.connect();
String json = get_response(conn);
System.out.println(json);
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private String get_response(HttpURLConnection conn)
{
String json = "";
try
{
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String next = null;
while((next = reader.readLine())!=null) json +="\n"+ next;
}
catch (IOException e)
{
System.err.println(e);
}
return json;
}
private HttpURLConnection get_connection(String url_string, String verb)
{
HttpURLConnection conn = null;
try
{
URL url = new URL(url_string);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod(verb);
conn.setDoInput(true);
conn.setDoOutput(true);
}
catch (MalformedURLException e)
{
System.err.println(e);
}
catch (IOException e)
{
System.err.println(e);
}
return conn;
}
}
Faltou dizer a resposta que a chamada acima retorna:
{
"results" : [
{
"address_components" : [
{
"long_name" : "R. José Luíz Ferraz",
"short_name" : "R. José Luíz Ferraz",
"types" : [ "route" ]
},
{
"long_name" : "Recreio dos Bandeirantes",
"short_name" : "Recreio dos Bandeirantes",
"types" : [ "sublocality", "political" ]
},
{
"long_name" : "Rio de Janeiro",
"short_name" : "Rio de Janeiro",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Rio de Janeiro",
"short_name" : "RJ",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Brazil",
"short_name" : "BR",
"types" : [ "country", "political" ]
},
{
"long_name" : "22790-587",
"short_name" : "22790-587",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "R. José Luíz Ferraz - Recreio dos Bandeirantes, Rio de Janeiro, 22790-587, Brazil",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : -23.02037010,
"lng" : -43.48516330
},
"southwest" : {
"lat" : -23.02104510,
"lng" : -43.48534830
}
},
"location" : {
"lat" : -23.02048510,
"lng" : -43.48532830
},
"location_type" : "GEOMETRIC_CENTER",
"viewport" : {
"northeast" : {
"lat" : -23.01935861970849,
"lng" : -43.48390681970850
},
"southwest" : {
"lat" : -23.02205658029150,
"lng" : -43.48660478029149
}
}
},
"partial_match" : true,
"types" : [ "route" ]
},
{
"address_components" : [
{
"long_name" : "Av. José Luís Ferraz",
"short_name" : "Av. José Luís Ferraz",
"types" : [ "route" ]
},
{
"long_name" : "Recreio dos Bandeirantes",
"short_name" : "Recreio dos Bandeirantes",
"types" : [ "sublocality", "political" ]
},
{
"long_name" : "Rio de Janeiro",
"short_name" : "Rio de Janeiro",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Rio de Janeiro",
"short_name" : "RJ",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Brazil",
"short_name" : "BR",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Av. José Luís Ferraz - Recreio dos Bandeirantes, Rio de Janeiro, Brazil",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : -23.0191650,
"lng" : -43.48508330
},
"southwest" : {
"lat" : -23.02351510,
"lng" : -43.48947330
}
},
"location" : {
"lat" : -23.02159010,
"lng" : -43.48712330
},
"location_type" : "GEOMETRIC_CENTER",
"viewport" : {
"northeast" : {
"lat" : -23.0191650,
"lng" : -43.48508330
},
"southwest" : {
"lat" : -23.02351510,
"lng" : -43.48947330
}
}
},
"partial_match" : true,
"types" : [ "route" ]
}
],
"status" : "OK"
}
É uma boa alternativa, porém não se esqueça que o Google tem uma limitação diária, se não me engano 2000 buscas.
2000 buscas é um número bem razoável, mas se esse número não for suficiente pra você é só usar o Google Maps for Business. Aí o numero sobe bastante. Mas 2000 buscas por dia, se for num form de cadastro por exemplo, dá e sobra.
Mais o preço é bem salgado caro queira um business.
Isso é…
Testei o seu webservice grepcep e gostei bastante! Parabéns!
Só faltou disponibilizar o retorno da chamada rest para o formato json em vez de String. O Gson do google faz isso molezinha molezinha.
Também seria muito interessante permitir uma chamada via jsonp habilitada para https.
Bom, no mais, gostei do serviço!!
Obrigado!
A idéia do Json já está em desenvolvimento, porém a do https ainda vai ficar mais pra frente!
Obrigado e até mais.
Ta beleza! Parabéns pela iniciativa mais uma vez, pretendo usar o seu produto em meu próximo projeto. Valeu!
O Json está em produção 
Abraços!
Beleza!! Obrigado pelo feedback!