Добавить дочерние элементы в настраиваемый заголовок SOAP в Spring-WS

Я вызываю веб-сервис SOAP с помощью Spring-WS. Рассматриваемый веб-сервис требует от меня передачи некоторой информации в заголовок 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, похоже, не предоставляет никаких средств для фактического добавления дочернего элемента. Я знаю, что могу добавить атрибут, но это не то, что мне нужно для этого вызова службы. Кто-нибудь знает, как я могу добавить необходимые дочерние элементы в свой собственный заголовок?

15
задан E_X 24 February 2015 в 10:55
поделиться