Llamo a un servicio web SOAP con Spring-WS. El servicio web en cuestión me obliga a pasar alguna información en el encabezado SOAP como se muestra aquí:Agregar elementos secundarios al encabezado SOAP personalizado en 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>
He descubierto cómo tenía la CustomHeaderElement nivel superior, pero no se ve nada en la primavera-WS API que me permite agregar un elemento secundario. Aquí es lo que tengo hasta ahora:
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);
}
});
El problema es headerElement no parece exponer a ningún medio de la adición de un niño en realidad. Sé que puedo agregar un atributo, pero eso no es lo que necesito para esta llamada de servicio. ¿Alguien sabe cómo podría agregar los elementos secundarios necesarios a mi encabezado personalizado?
¿Te refieres a algo similar a esta publicación: http://stackoverflow.com/questions/4046075/how-to-add-soap-headers-to-spring-jax-ws-client donde se usa un transformador después de la fundición el mensaje a un SOAPMessage? Estoy de acuerdo en que no es realmente agradable ni elegante. Me pregunto porque. – chris
-1 Realmente no es una respuesta. PD el enlace provisto por @chris tiene buenas soluciones. – kaskelotti
Su respuesta, incluso marcada como la correcta, no nos ayudó en absoluto. – marionmaiden