Ich rufe einen SOAP-Webservice mit Spring-WS auf. Die WebService in Frage erfordert mir einige Informationen im SOAP-Header passieren, wie hier gezeigt:Hinzufügen von untergeordneten Elementen zum benutzerdefinierten SOAP-Header in 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>
Ich habe herausgefunden, wie die Top-Level CustomHeaderElement musste, aber ich sehe nichts im Frühling-WS API, mit der ich ein untergeordnetes Element hinzufügen kann. Hier ist, was ich bisher:
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);
}
});
Das Problem ist headerElement keine Mittel auszusetzen scheint tatsächlich ein Kind hinzufügen. Ich weiß, dass ich ein Attribut hinzufügen kann, aber das ist nicht das, was ich für diesen Serviceanruf benötige. Weiß jemand, wie ich die erforderlichen Kindelemente zu meinem benutzerdefinierten Header hinzufügen könnte?
Meinst du etwas ähnliches zu diesem Beitrag: http://stackoverflow.com/questions/4046075/how-to-add-soap-headers-to-spring-jax-ws-client, wo ein Transformer nach Gießen verwendet wird die Nachricht an eine SOAPMessage? Ich stimme zu, dass es nicht wirklich angenehm oder elegant ist. Ich wundere mich warum. – chris
-1 Nicht wirklich eine Antwort. P.S. Der Link von @chris bietet gute Lösungen. – kaskelotti
Ihre Antwort, sogar als die richtige markiert, hat uns überhaupt nicht geholfen. – marionmaiden