Ejemplo de cliente SOAP

A continuación se detalla un ejemplo de cliente SOAP realizado en JAVA. El cliente SOAP debe llevar a cabo los siguientes pasos:

 

  • Indicar la URL del servicio SOAP al que quiere acceder

URL url = new URL (“https://sis.redsys.es/apl02/services/SerClsWSConsulta”);

 

  • Crear un objeto del tipo SOAPMappingRe­gistry:

SOAPMappingRegistry smr = new SOAP­MappingRegistry();

 

  • Crear un objeto del tipo Call con los si­guientes datos:

SOAPMappingRegistry (anteriormente crea­do)

TargetObjectURI. URN del servicio de men­sajería.

MethodName. Método al que se quiere acceder.

EncodingStyleURI. Constante.

 

  • Vector con los parámetros de la consulta

 

Por ejemplo:

Call call = new Call(); 
call.setSOAPMappingRegistry(smr); 
call.setTargetObjectURI(“urn:mensajeriaCIBERPAC”); 
call.setMethodName(“procesaMensajeRecibido”); 
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); 
Vector params = new Vector(); 
params.addElement(new Parameter(“Mensaje”, String.class, xml_doc, null)); 
call.setParams(params);

 

Realizar invoke con la URL del servicio SOAP, que retornará un objeto “Response”

Response resp=null; 
resp = call.invoke(url, ““); 
Parameter ret = resp.getReturnValue(); 
Object value = ret.getValue();

 

EJEMPLO CLIENTE SOAP JAVA (SERVLET):

 

import java.util.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
Import java.net. *; 
import org.apache.soap.*; 
import org.apache.soap.messaging.*; 
import org.apache.soap.transport.*; 
import org.apache.soap.util.xml.*; 
import org.apache.soap.encoding.*; 
import org.apache.soap.encoding.soapenc.*; 
import org.apache.soap.rpc.*; 
public class SerSvlCIBERPAC extends HttpServlet 
{ 
public void doPost(HttpServletRequest req, HttpServletResponse res) 
throws ServletException, IOException 
{ 
String respuesta = ““; 
try 
{ 
String xml_doc = req.getParameter(“elXMLEnvio”); 
respuesta = ejecutaCallRPCStyle(xml_doc); 
} 
catch(Exception e) 
{ 
e.printStackTrace(); 
} 
} 
public String ejecutaCallRPCStyle(String xml_doc) throws 
ServletException, IOException 
{ 
String respuesta = ““; 
String encodingStyleURI = Constants.NS_URI_SOAP_ENC; 
URL url = new URL(“https://sis.redsys.es/aplSOAP/rpcrouter”); 
SOAPMappingRegistry smr = new SOAPMappingRegistry(); 
Call call = new Call(); 
call.setSOAPMappingRegistry(smr); 
call.setTargetObjectURI(“urn:mensajeriaCIBERPAC”); 
call.setMethodName(“procesaMensajeRecibido”); 
call.setEncodingStyleURI(encodingStyleURI); 
Vector params = new Vector(); 
params.addElement(new Parameter(“Mensaje”, String.class, 
xml_doc, null)); 
call.setParams(params); 
Response resp=null; 
try 
{ 
resp = call.invoke(url, ““); 
} 
catch (SOAPException e) 
{ 
e.printStackTrace(); 
} 
if (!resp.generatedFault()) 
{ 
Parameter ret = resp.getReturnValue(); 
Object value = ret.getValue(); 
respuesta = (String) value; 
} 
else 
{ 
Fault fault = resp.getFault(); 
respuesta = fault.getFaultString(); 
} 
return (respuesta); 
} 
}