Problema cliente WebService

1 resposta
alf_f2

Estou tendo um problema para criar um cliente webservice.

:roll: Preciso que meu cliente:

  1. Instancie o WS
  2. Execute um método alterando o estado do objeto
  3. Depois execute outro método alterando o estado do objeto… etc

Na web só consegui exemplos que fazem cliente que executam apenas um método do WS.

Meu cliente executa a primeira chamada beleza, mas na hora de executar o segundo método do WS dá pau.

Por favor me ajudem :frowning:

Abaixo o código do meu cliente:

package cli;
import javax.swing.JOptionPane;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class cliRoboWSLogin{
public static void main(String[] args){
	
}	
	
public void run(){
	try{
		String inXML="";
		inXML += "<?xml version=\"1.0\"?>";
		inXML += "<SFCODOC>";
		inXML += " <cdMsg>SFCOLOGIN001</cdMsg>";
		inXML += " <SiafisicoLogin>";
		inXML += "   <login>";
		inXML += "    <Codigo>psiafisico7</Codigo>";   
		inXML += "    <Senha>13novembro</Senha>";
		inXML += "    <Ano>2007</Ano>";   
		inXML += "   </login>";
		inXML += "</SiafisicoLogin>";
		inXML += "</SFCODOC>";
		
		
		String urlWS = JOptionPane.showInputDialog("Digite a url:", "http://172.16.64.27:8085/axis/RobosSiafisico.jws");
		
		//Pegar Entrada:
		//inXML  = JOptionPane.showInputDialog("xml:", inXML);		
		Object[] params = {inXML};
		
		
		Service service = new Service();
		
		//Login
		Call call = (Call) service.createCall();
		call.setTargetEndpointAddress(urlWS);
		call.setOperationName("SFCOLogin");
		String ret = (String) call.invoke(params);		
		JOptionPane.showMessageDialog(null, ret);//ate aki blz
		
		inXML  = JOptionPane.showInputDialog("xml:", inXML);		
		
		//Mudpah
		service = call.getService();
		
		//call = (Call) service.createCall();
		call.setOperationName("SFCOMudapah");
		ret = (String) call.invoke(params);		
		JOptionPane.showMessageDialog(null, ret);
		
		
	}catch(Exception ex){
		System.out.println("--Exception: ------------------------");
		ex.printStackTrace();
		JOptionPane.showMessageDialog(null, "Exception ocorreu ao executar o cliente: "+ex.getMessage());	
		
	}

}//end metodo
}//end class

Abaixo código do JWS:

import javax.activation.DataHandler;

import robots.*;


/**
 * Esta classe deverá ser transformada em JWS e colocada sob o Axis
 */
public class RobosSiafisico {

//Contexto:
	
private FunctionsMF oFunctionsMF = new FunctionsMF();

//Metodos:
	public String SFCOLogin(String inXML) {
		RoboSFCOLogin robo = new RoboSFCOLogin();		
		return robo.executar( inXML, oFunctionsMF);		
	}
	
	public String SFCOMudapah(String inXML) {
		RoboSFCOMudapah robo = new RoboSFCOMudapah();		
		return robo.executar( inXML, oFunctionsMF);	
	}

	public String RoboSFCOOC(String inXML) {
		RoboSFCOOC robo = new RoboSFCOOC();		
		return robo.executar( inXML, oFunctionsMF);	
	}

	public String RoboSFCOCT(String inXML) {
		RoboSFCOCT robo = new RoboSFCOCT();		
		return robo.executar( inXML, oFunctionsMF);	
	}
	


}//end class

Abaixo wsdl:

<?xml version="1.0" encoding="UTF-8" ?> 
- <wsdl:definitions targetNamespace="http://172.16.64.27:8085/axis/RobosSiafisico.jws" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://172.16.64.27:8085/axis/RobosSiafisico.jws" xmlns:intf="http://172.16.64.27:8085/axis/RobosSiafisico.jws" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <!-- 
WSDL created by Apache Axis version: 1.4
Built on Nov 19, 2006 (02:31:34 GMT+00:00)

  --> 
- <wsdl:message name="SFCOLoginResponse">
  <wsdl:part name="SFCOLoginReturn" type="xsd:string" /> 
  </wsdl:message>
- <wsdl:message name="SFCOMudapahResponse">
  <wsdl:part name="SFCOMudapahReturn" type="xsd:string" /> 
  </wsdl:message>
- <wsdl:message name="SFCOMudapahRequest">
  <wsdl:part name="inXML" type="xsd:string" /> 
  </wsdl:message>
- <wsdl:message name="RoboSFCOCTResponse">
  <wsdl:part name="RoboSFCOCTReturn" type="xsd:string" /> 
  </wsdl:message>
- <wsdl:message name="RoboSFCOOCRequest">
  <wsdl:part name="inXML" type="xsd:string" /> 
  </wsdl:message>
- <wsdl:message name="RoboSFCOCTRequest">
  <wsdl:part name="inXML" type="xsd:string" /> 
  </wsdl:message>
- <wsdl:message name="RoboSFCOOCResponse">
  <wsdl:part name="RoboSFCOOCReturn" type="xsd:string" /> 
  </wsdl:message>
- <wsdl:message name="SFCOLoginRequest">
  <wsdl:part name="inXML" type="xsd:string" /> 
  </wsdl:message>
- <wsdl:portType name="RobosSiafisico">
- <wsdl:operation name="SFCOLogin" parameterOrder="inXML">
  <wsdl:input message="impl:SFCOLoginRequest" name="SFCOLoginRequest" /> 
  <wsdl:output message="impl:SFCOLoginResponse" name="SFCOLoginResponse" /> 
  </wsdl:operation>
- <wsdl:operation name="SFCOMudapah" parameterOrder="inXML">
  <wsdl:input message="impl:SFCOMudapahRequest" name="SFCOMudapahRequest" /> 
  <wsdl:output message="impl:SFCOMudapahResponse" name="SFCOMudapahResponse" /> 
  </wsdl:operation>
- <wsdl:operation name="RoboSFCOOC" parameterOrder="inXML">
  <wsdl:input message="impl:RoboSFCOOCRequest" name="RoboSFCOOCRequest" /> 
  <wsdl:output message="impl:RoboSFCOOCResponse" name="RoboSFCOOCResponse" /> 
  </wsdl:operation>
- <wsdl:operation name="RoboSFCOCT" parameterOrder="inXML">
  <wsdl:input message="impl:RoboSFCOCTRequest" name="RoboSFCOCTRequest" /> 
  <wsdl:output message="impl:RoboSFCOCTResponse" name="RoboSFCOCTResponse" /> 
  </wsdl:operation>
  </wsdl:portType>
- <wsdl:binding name="RobosSiafisicoSoapBinding" type="impl:RobosSiafisico">
  <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> 
- <wsdl:operation name="SFCOLogin">
  <wsdlsoap:operation soapAction="" /> 
- <wsdl:input name="SFCOLoginRequest">
  <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded" /> 
  </wsdl:input>
- <wsdl:output name="SFCOLoginResponse">
  <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://172.16.64.27:8085/axis/RobosSiafisico.jws" use="encoded" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="SFCOMudapah">
  <wsdlsoap:operation soapAction="" /> 
- <wsdl:input name="SFCOMudapahRequest">
  <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded" /> 
  </wsdl:input>
- <wsdl:output name="SFCOMudapahResponse">
  <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://172.16.64.27:8085/axis/RobosSiafisico.jws" use="encoded" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="RoboSFCOOC">
  <wsdlsoap:operation soapAction="" /> 
- <wsdl:input name="RoboSFCOOCRequest">
  <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded" /> 
  </wsdl:input>
- <wsdl:output name="RoboSFCOOCResponse">
  <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://172.16.64.27:8085/axis/RobosSiafisico.jws" use="encoded" /> 
  </wsdl:output>
  </wsdl:operation>
- <wsdl:operation name="RoboSFCOCT">
  <wsdlsoap:operation soapAction="" /> 
- <wsdl:input name="RoboSFCOCTRequest">
  <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded" /> 
  </wsdl:input>
- <wsdl:output name="RoboSFCOCTResponse">
  <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://172.16.64.27:8085/axis/RobosSiafisico.jws" use="encoded" /> 
  </wsdl:output>
  </wsdl:operation>
  </wsdl:binding>
- <wsdl:service name="RobosSiafisicoService">
- <wsdl:port binding="impl:RobosSiafisicoSoapBinding" name="RobosSiafisico">
  <wsdlsoap:address location="http://172.16.64.27:8085/axis/RobosSiafisico.jws" /> 
  </wsdl:port>
  </wsdl:service>
  </wsdl:definitions>

1 Resposta

alf_f2

Pessoal consegui.

O Segredo é a linha : service.setMaintainSession(true);

Vou postar o código:

package cli;

import javax.swing.JOptionPane;

public class teste {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		cliRoboWS  rb = new cliRoboWS ();
		
		rb.run("li");
		rb.run("mp");
		rb.run("lo");
		
		
	}
}
package cli;
import javax.swing.JOptionPane;
import javax.xml.namespace.QName;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class cliRoboWS{
	
Service service = null;	
String  urlWS = null;	
cliRoboWS(){
	service = new Service();
	service.setMaintainSession(true);
	urlWS = JOptionPane.showInputDialog("Digite a url:", "http://172.16.64.27:8085/axis/RobosSiafisico.jws");
}

public void run(String strOP){
	try{
		
		XMLDefaults oXMLDefaults = new XMLDefaults();
		
		
		
		//Pegar Entrada:
		
		if(strOP.toUpperCase().equals("LI")) {
			//Login
			String inXML  = JOptionPane.showInputDialog("xml:", oXMLDefaults.inXML_Login);
			Call call = (Call) service.createCall();
			call.setTargetEndpointAddress(urlWS);
			call.setOperationName("SFCOLogin");
			String ret = (String) call.invoke(new Object[] {inXML});		
			JOptionPane.showMessageDialog(null, ret);
		}
				
		if(strOP.toUpperCase().equals("MP")) {
			//Mudapah:		
			JOptionPane.showMessageDialog(null,"Agora Irá Executar o Mudapah");
			String inXMLMudapah  = JOptionPane.showInputDialog("xml:", oXMLDefaults.inXMLMudapah);
			Call call2 = (Call) service.createCall();
			call2.setTargetEndpointAddress(urlWS);
			call2.setOperationName("SFCOMudapah");
			String ret2 = (String) call2.invoke(new Object[] {inXMLMudapah} );		
			JOptionPane.showMessageDialog(null, ret2);
		}
		
		if(strOP.toUpperCase().equals("OC")) {
			//OC:		
			JOptionPane.showMessageDialog(null,"Agora Irá Executar a OC");
			String inXML_OC  = JOptionPane.showInputDialog("xml:", oXMLDefaults.inXML_OC);
			Call call3 = (Call) service.createCall();
			call3.setTargetEndpointAddress(urlWS);
			call3.setOperationName("RoboSFCOOC");
			String ret3 = (String) call3.invoke(new Object[] {inXML_OC} );		
			JOptionPane.showMessageDialog(null, ret3);
		}

		if(strOP.toUpperCase().equals("CT")) {
			//CT:
			JOptionPane.showMessageDialog(null,"Agora Irá Executar a CT");
			String inXML_CT  = JOptionPane.showInputDialog("xml:", oXMLDefaults.inXML_CT);
			Call call4 = (Call) service.createCall();
			call4.setTargetEndpointAddress(urlWS);
			call4.setOperationName("RoboSFCOCT");
			String ret4 = (String) call4.invoke(new Object[] {inXML_CT} );		
			JOptionPane.showMessageDialog(null, ret4);
		}

		if(strOP.toUpperCase().equals("LO")) {
			//Logoff:		
			JOptionPane.showMessageDialog(null,"Agora Irá Executar o Logoff");
			Call call5 = (Call) service.createCall();
			call5.setTargetEndpointAddress(urlWS);
			call5.setOperationName("SFCOLogoff");
			call5.invoke(new Object[] {});		
		}		
		
		
	}catch(Exception ex){
		System.out.println("--Exception: ------------------------");
		ex.printStackTrace();
		JOptionPane.showMessageDialog(null, "Exception ocorreu ao executar o cliente: "+ex.getMessage());	
		
	}

}//end metodo
}//end class
Criado 2 de abril de 2007
Ultima resposta 2 de abr. de 2007
Respostas 1
Participantes 1