Java Génère une enveloppe SOAP


J'ai la méthode suivante :

String [] getEmployeeDetails ( int employeeNumber ); La demande assosiate ressemble à ceci:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
  <SOAP-ENV:Envelope
   SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
   xmlns:xsd="http://www.w3.org/1999/XMLSchema">
	<SOAP-ENV:Body>
		<ns1:getEmployeeDetails
		 xmlns:ns1="urn:MySoapServices">
			<param1 xsi:type="xsd:int">1016577</param1>
		</ns1:getEmployeeDetails>
	</SOAP-ENV:Body>
  </SOAP-ENV:Envelope>

Cet exemple venir à partir de ce lien [http://www.soapuser.com/basics3.html][1]

Je ne comprends pas comment ils font pour le générer par programme avec java. S'il vous plaît aider !

Author: simplo, 2015-02-17

2 answers

Fondamentalement, vous devez utiliser l'API SAAJ, c'est une API qui utilise SOAPMessage et vous donne quelques objets et méthodes pour créer une demande SOAP par programme, vous pouvez voir ce lien pour plus de référence. Consultez également la documentation d'Oracle, ils vous donnent quelques exemples utiles. Pour un exemple réel, vous pouvez vérifier ce lien

MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();

// Retrieve different parts
SOAPPart soapPart = soapMessage.getSOAPPart();
SOAPEnvelope soapEnvelope = soapMessage.getSOAPPart().getEnvelope();

// Two ways to extract headers
SOAPHeader soapHeader = soapEnvelope.getHeader();
soapHeader = soapMessage.getSOAPHeader();

// Two ways to extract body
SOAPBody soapBody = soapEnvelope.getBody();
soapBody = soapMessage.getSOAPBody();

// To add some element
SOAPFactory soapFactory = SOAPFactory.newInstance();
Name bodyName  = soapFactory.createName("getEmployeeDetails","ns1","urn:MySoapServices");
SOAPBodyElement purchaseLineItems = soapBody.addBodyElement(bodyName);
Name childName = soapFactory.createName("param1");
SOAPElement order = purchaseLineItems.addChildElement(childName);
order.addTextNode("1016577");
 6
Author: Koitoer, 2017-08-10 21:20:46

Vous pouvez récupérer le wsdl du service soap (généralement quelque chose comme http://endpointurl?wsdl ), puis utilisez l'utilitaire wsdl2java d'Apache CXF pour générer du code avec le paramètre-client. Le code généré fera beaucoup de travail pour vous en termes de création d'une demande SOAP valide et de son envoi au point de terminaison, ou si vous voulez simplement voir comment cela fonctionne, vous pouvez suivre les appels qu'il effectue dans la source CXF et voir comment ils se portent chose.

Http://cxf.apache.org/docs/how-do-i-develop-a-client.html

 0
Author: Hubschrauber, 2015-02-17 20:11:30