[RESOLVIDO]Consumir WebService para consultar cep

21 respostas
E

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

N

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.

E

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.

N

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!

E

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

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.

E

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

E

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?

N

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.

E

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!

E

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

Segue a imagem


N

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:

E

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);
N
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.

N

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

E

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
E

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

N

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!

E

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!

B

CARACA, Nel !!!

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

Abraço e muito obrigado

C

Caso ajude,

Tem este tutorial!

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

Abraço

A

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