A continuación se detalla un ejemplo de cliente SOAP realizado en JAVA. El cliente SOAP debe llevar a cabo los siguientes pasos:
URL url = new URL (“https://sis.redsys.es/apl02/services/SerClsWSConsulta”);
SOAPMappingRegistry smr = new SOAPMappingRegistry();
SOAPMappingRegistry (anteriormente creado)
TargetObjectURI. URN del servicio de mensajería.
MethodName. Método al que se quiere acceder.
EncodingStyleURI. Constante.
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();
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); } }