How do you set a custom HTTP header (not SOAP header) dynamically on the client side when using Spring-WS?
The following fragment has been tested with Spring 4.0. It appends a WebServiceMessageCallback
to a org.springframework.ws.client.core.WebServiceTemplate
final String DYNAMICVALUE = "myDynamo";
WebServiceMessageCallback wsCallback = new WebServiceMessageCallback() {
public void doWithMessage(WebServiceMessage message) {
try {
SoapMessage soapMessage = (SoapMessage)message;
SoapHeader header = soapMessage.getSoapHeader();
header.addAttribute(new QName("myHeaderElement"), DYNAMICVALUE);
} catch (Exception e) {
e.printStackTrace();
}
}
};
JAXBElement response = (JAXBElement)
wsTemplate.marshalSendAndReceive(MyWsOP, wsCallback);