Spring-WS で SOAP Web サービスを呼び出しています。問題の Web サービスでは、次に示すように、SOAP ヘッダーでいくつかの情報を渡す必要があります。
<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>
最上位の CustomHeaderElement を作成する方法はわかりましたが、Spring-WS API には子要素を追加できるものは何もありません。これが私がこれまでに持っているものです:
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);
}
});
問題は、headerElement が実際に子を追加する手段を公開していないように見えることです。属性を追加できることはわかっていますが、それはこのサービス呼び出しに必要なものではありません。必要な子要素をカスタム ヘッダーに追加する方法を知っている人はいますか?