Consumir Web Sevice

8 respostas
tengan

Olá pessoal!!! sei que essa dúvida deve ser bem constante por aqui ou já esteja em algum lugar do fórum.

Mas como eu consumo um Web Service em Java.

Já dei uma pesquisada e encontrei o Axis2 e outros frameworks que ajudam, até fiz alguns testes mas não funcionaram, o que eu preciso é de um exemplo bem básico, pois preciso consumir somente um método do Web Service.

O Web Service foi feito em .Net C#, mas creio que isso não é problema.

por favor ajudem!!!

8 Respostas

Pedrosa

Olha esse post:
http://www.guj.com.br/posts/list/108470.java#585045

Xfire simples, rapido e indolor.

public String getXpto()throws Exception{    
        URL url = new URL("http://PEDROSA:8080/ServicoTeste/services/Teste?wsdl");    
        Client cliente = new Client(url);    
        Object[] resultado = cliente.invoke("metodoWebService", new Object[]{par1,par2);    
        return resultado[0].toString();    
   }
tengan

Pedrosa vlw pela ajuda consgui criar a classe para consumir o web service, mesmo assim gera um erro de timed out

de uma olhada

código java

import java.net.URL;

import org.codehaus.xfire.client.Client;

public class Card {

	public static void main(String[] args) 
	{
		System.out.println(getCardInfo());
	}
	
	public static String getCardInfo(){
		try{
			 URL url = new URL("http://site/ws/service.asmx?wsdl");     
			    Client cliente = new Client(url);     
			    Object[] resultado = cliente.invoke("GetCardInfo", new Object[]{"1","2","3","4"});     
			    return resultado.toString();     
			    
	}catch(Exception ex){
			ex.printStackTrace();
		}
		return null; 
	}
}

e o erro que gera:

java.net.ConnectException: Connection timed out: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(Unknown Source)
	at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
	at java.net.PlainSocketImpl.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at sun.net.NetworkClient.doConnect(Unknown Source)
	at sun.net.www.http.HttpClient.openServer(Unknown Source)
	at sun.net.www.http.HttpClient.openServer(Unknown Source)
	at sun.net.www.http.HttpClient.<init>(Unknown Source)
	at sun.net.www.http.HttpClient.New(Unknown Source)
	at sun.net.www.http.HttpClient.New(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
	at java.net.URL.openStream(Unknown Source)
	at org.codehaus.xfire.client.Client.<init>(Client.java:246)
	at Card.getCardInfo(Card.java:15)
	at Card.main(Card.java:9)

pelo que entendi é um erro de timed out.

Pedrosa

Cuidado com essa url do ws real na net, esse erro é algum problema no serviço que vc esta acessando, verifique se alguem esta com algum problema para consumir esse serviço além de voce.

tengan

vlw pela dica. mas o url esta correto para chamar o web service?

Pedrosa

Olhei o wsdl, aparentemente esta certo, vc esta passando os parametros corretos?

tengan

Então os paramteros são de teste, realmente vai dar uma mensagem de erro, mas nem consigo conectar o webservice para chamar o método.

O erro está dando quando tento instanciar o client.

então nem chego a invocar o metodo, será que posso passar os parametros na url direto ou tenho que usar o invoke para passar eles???

Pedrosa

Não com o xfire é dessa forma, aparentemente vc conectou no ws a mensagem de timeout as vezes ocorre devido a algum problema na aplicação que publica o serviço, pode esta demorando muito a consulta ou ter dado erro e isso gera um timeout no Client.

tengan

O ws que tento conectar realmente é grande, mas já tentei conectar um ws menor e gerou o mesmo erro. mas uma aplicação .Net conecta normal com o ws.

Criado 18 de dezembro de 2008
Ultima resposta 18 de dez. de 2008
Respostas 8
Participantes 2