[RESOLVIDO]Consumir WebService para consultar cep

21 respostas
evertonsilvagomesjav

Pessoal bom dia, estou pesquisando a um bom tempo mas sem sucesso, como eu faço pra conectar em um webservice de cep para obter a rua o numero logradouro etc?

21 Respostas

nel

Oi!

Estamos falando em um Web Service publico, como do Correios, por exemplo, ou simplesmente como você faria um Cliente em Java pra isso?
Abraços.

evertonsilvagomesjav

Oi!

Estamos falando em um Web Service publico, como do Correios, por exemplo, ou simplesmente como você faria um Cliente em Java pra isso?
Abraços.

Fala Nel bom de mais ?

Então, nao entendo muito do assunto, mas seria um Web Service publico onde o usuario vai digitar o cep e realizar a consulta do logradouro, bairro etc.

Este webService parece que esta funcionando: http://www.bronzebusiness.com.br/webservices/wscep.asmx?WSDL

Só que nao sei o que fazer.

nel

Oi!

Bom, se ele funciona corretamente e tras as informações que precisa, o mais simples é criar os clients para acessar ele.
E isso é muito fácil mesmo, principalmente para um WSDL estático.

Basta utilizar o wsimport e ser feliz. Podes inclusive configurar para usar isso via ant.
Aqui tem um exemplo da Caelum que demonstra como criar o servidor e o cliente, preocupa-se com a parte do cliente, verás que é bem simples!

O próprio Java se encarrega de fazer as devidas transformações, então, você sempre trabalha com Objeto :slight_smile:
Basicamente, para gerar as classes é o comando:

wsimport -keep -p seu.package http://www.bronzebusiness.com.br/webservices/wscep.asmx?WSDL

Qualquer coisa, poste ai!

Abraços!

evertonsilvagomesjav

Opa Nel, pelo que esta no site da caelum então bastava eu gerar o wsimport -keep -p br.gov.cvm.rfe.util http://www.bronzebusiness.com.br/webservices/wscep.asmx?WSDL

Quando eu executei o comando dentro da pasta bin do meu jdk falou que wsimport não é reconhecido como um comando =/

nel

evertonsilvagomesjava:
Opa Nel, pelo que esta no site da caelum então bastava eu gerar o wsimport -keep -p br.gov.cvm.rfe.util http://www.bronzebusiness.com.br/webservices/wscep.asmx?WSDL

Quando eu executei o comando dentro da pasta bin do meu jdk falou que wsimport não é reconhecido como um comando =/

Não precisa roda-lo dentro da pasta bin, meu caro.
Você possui o JAVA_HOME instalado em sua máquina? Está apontando para o JDK correto?

Só para deixar como registro, fui gerar as classes desse Web Service e deu erro, está com falha esse WSDL.
Aconselho a pesquisar por outro colega, quando encontrar, poste aqui que tento novamente ok?!

Abraços.

evertonsilvagomesjav

Meu JAVA_HOME ta ok -> C:\Arquivos de programas\Java\jdk1.6.0_16

Nel, tem este: http://www.byjg.com.br/site/webservice.php/ws/cep?WSDL

evertonsilvagomesjav

Eu tentei executar nesse WSDL deu o seguinte erro no prompt:

[ERROR] undefined simple or complex type 'soapenc:array' line 2 of http://www.byjg.com.br/site/webservice.php/ws/cep?WSDL

[ERROR] undefined simple or complex type 'soapenc:arrayType' line 2 of http://www.byjg.com.br/site/webservice.php/ws/cep?WSDL

Isso é erro no WSDL?

nel

evertonsilvagomesjava:
Eu tentei executar nesse WSDL deu o seguinte erro no prompt:

[ERROR] undefined simple or complex type 'soapenc:array' line 2 of http://www.byjg.com.br/site/webservice.php/ws/cep?WSDL

[ERROR] undefined simple or complex type 'soapenc:arrayType' line 2 of http://www.byjg.com.br/site/webservice.php/ws/cep?WSDL

Isso é erro no WSDL?

Sim, é erro no WSDL.
Tem cidadão que me joga o WSDL com referência a XSD e não joga o XSD no servidor, ai tu tenta gerar as coisas e cadê? :evil:
Mas ao que vejo o wsimport ai está ok! :slight_smile:

Vou ver se acho algo também, então.
Abraços.

evertonsilvagomesjav

nel:
evertonsilvagomesjava:
Eu tentei executar nesse WSDL deu o seguinte erro no prompt:

[ERROR] undefined simple or complex type 'soapenc:array' line 2 of http://www.byjg.com.br/site/webservice.php/ws/cep?WSDL

[ERROR] undefined simple or complex type 'soapenc:arrayType' line 2 of http://www.byjg.com.br/site/webservice.php/ws/cep?WSDL

Isso é erro no WSDL?

Sim, é erro no WSDL.
Tem cidadão que me joga o WSDL com referência a XSD e não joga o XSD no servidor, ai tu tenta gerar as coisas e cadê? :evil:
Mas ao que vejo o wsimport ai está ok! :slight_smile:

Vou ver se acho algo também, então.
Abraços.

Entendi, vou procurar mais WSDL aqui, vlw Nel!

evertonsilvagomesjav

Nel veja o que foi gerado pra mim agora, porém não foi criada nenhuma classe no meu package informado.

Segue a imagem


nel

Tens certeza?
Se tu usares o comando wsimport estando no C: por exemplo, o package será gerado no C:…entende?

Gerei aqui sem nenhum problema, segue em anexo as classes geradas, dentro de um zip. :wink:

evertonsilvagomesjav

Vc tentou usar? Eu consegui gerar as classes \o/.

Dando time out quando instancio o service

CEPWebService service = new CEPWebService();
		
		CEP cep = service.getCEPWebServiceSoap().consultaCEP("32280550");
	
		System.out.println(cep);
nel
evertonsilvagomesjava:
Vc tentou usar? Eu consegui gerar as classes \o/.

Dando time out quando instancio o service

CEPWebService service = new CEPWebService();
		
		CEP cep = service.getCEPWebServiceSoap().consultaCEP("32280550");
	
		System.out.println(cep);

Oi!
Tentei usar não.

Tem Firewall e/ou Proxy ai?
Senão depois eu tento aqui também.

nel

Cara...show :)

Consegui usar e olha os resultados:

CEPWebService service = new CEPWebService();   
CEP cep = service.getCEPWebServiceSoap().consultaCEP("32280550");   
        
System.out.println("Cidade: " + cep.getCidade());
System.out.println("Bairro: " + cep.getBairro());
System.out.println("Logradouro: " + cep.getLogradouro());

Resultados:

Cidade: CONTAGEM
Bairro: NOVO RIACHO
Logradouro:  RIO MARABAS

Certo? :D

evertonsilvagomesjav

Pocha nel é isso mesmo que preciso, setei os properties porcausa do proxy e parou de da o timeout só que agora olha á Exception que está dando =/

System.getProperties().put("proxySet", "true");   
		System.getProperties().put("http.proxyHost", "192.168.0.10");   
		System.getProperties().put("http.proxyPort", "3128");   
		System.getProperties().put("http.proxyUser", "everton.gomes");   
		System.getProperties().put("http.proxyPassword", "teste123");  

		
		CEPWebService service = new CEPWebService();
				
		CEP cep = service.getCEPWebServiceSoap().consultaCEP("32280550");
	
		System.out.println(cep.getBairro());
		System.out.println(cep.getCidade());
		System.out.println(cep.getLogradouro());
		System.out.println(cep.getTipoLogradouro());

Exception

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/xml/messaging/saaj/soap/AttachmentPartImpl
	at com.sun.xml.ws.message.AttachmentUnmarshallerImpl.<clinit>(AttachmentUnmarshallerImpl.java:55)
	at com.sun.xml.ws.client.sei.ResponseBuilder$DocLit.readResponse(ResponseBuilder.java:500)
	at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:242)
	at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:210)
	at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:103)
	at $Proxy29.consultaCEP(Unknown Source)
	at br.gov.cvm.rfe.web.util.End.main(End.java:31)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.messaging.saaj.soap.AttachmentPartImpl
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	... 7 more
evertonsilvagomesjav

Era um .jar Nel que tava faltando hehe, muito obrigado pela ajuda Nel, ajudou de mais cara!

nel

Show de bola brother!
Eu trabalhei/trabalho com WS e acho bem interessante essa tecnologia.
Qualquer coisa é só falar, podes mandar MP inclusive :smiley:

Se o problema está resolvido, só adicione isso ao tópico, beleza champz?
Abraços e sucesso!

evertonsilvagomesjav

Show de bola brother!
Eu trabalhei/trabalho com WS e acho bem interessante essa tecnologia.
Qualquer coisa é só falar, podes mandar MP inclusive :smiley:

Se o problema está resolvido, só adicione isso ao tópico, beleza champz?
Abraços e sucesso!

Adicionei la o [Resolvido], muito obrigado Nel, precisando eu pedirei ajuda \o/ kkk, valeu!

bonissauro

CARACA, Nel !!!

Te devo meia dúzia de cervejas depois dessa !!!

Abraço e muito obrigado

chicocx

Caso ajude,

Tem este tutorial!

http://solutioin.com/dokuwiki/doku.php/produtos/consulta-cep

Abraço

ayrancd

Base de CEP em tempo real com os Correios (sem necessidade de instalação do Banco de dados) acesse www.appnet.com.br/cep/

O serviço é grauito!

Criado 9 de agosto de 2011
Ultima resposta 14 de out. de 2017
Respostas 21
Participantes 5