J'appelle un service Web SOAP avec Spring-WS. Le webservice en question me demande de transmettre des informations dans l'en-tête SOAP comme indiqué ici:Ajouter des éléments enfants à l'en-tête SOAP personnalisé dans Spring-WS
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<CustomHeaderElement>
<clientID>xyz</clientID>
<wsdlVersion>1.0</wsdlVersion>
<serviceType>ExampleService_v1</serviceType>
</CustomHeaderElement>
</soapenv:Header>
<soapenv:Body>
...
</soapenv:Body>
</soapenv:Envelope>
J'ai compris comment avait le niveau supérieur CustomHeaderElement, mais je ne vois rien dans le printemps-WS API qui me permet d'ajouter un élément enfant. Voici ce que j'ai jusqu'à présent:
WebServiceTemplate template = ...;
template.marshalSendAndReceive(request, new WebServiceMessageCallback(){
public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException{
SoapMessage soapMessage = (SoapMessage)message;
SoapHeader soapHeader = soapMessage.getSoapHeader();
QName qName = new QName("CustomHeaderElement");
SOAPHeaderElement headerElement = soapHeader.addHeaderElement(qName);
//would like to do something like headerElement.addChild(clientIdNode);
}
});
Le problème est headerElement ne semble pas exposer tout moyen d'ajouter effectivement un enfant. Je sais que je peux ajouter un attribut, mais ce n'est pas ce dont j'ai besoin pour cet appel de service. Est-ce que quelqu'un sait comment je pourrais ajouter les éléments enfants nécessaires à mon en-tête personnalisé?
Voulez-vous dire quelque chose de similaire à ce post: http://stackoverflow.com/questions/4046075/how-to-add-soap-headers-to-spring-jax-ws-client où un transformateur est utilisé après la coulée le message à un message SOAPMessage? Je suis d'accord que ce n'est pas vraiment agréable ni élégant. Je me demande pourquoi. – chris
-1 Pas vraiment une réponse. P.S. le lien fourni par @chris a de bonnes solutions. – kaskelotti
Votre réponse, même marquée comme la bonne, ne nous a pas aidé du tout. – marionmaiden