2015-07-22 12 views

ответ

7

http://docs.oracle.com/javaee/5/tutorial/doc/bnbhr.html:

Следующая строка является пустой заголовок SOAP. Вы можете удалить его, вызвав header.detachNode после вызова getSOAPHeader.

Так вот решение в простом SAAJ:

 MessageFactory messageFactory = MessageFactory.newInstance("SOAP 1.2 Protocol"); 
     SOAPMessage message = messageFactory.createMessage(); 
     message.getSOAPHeader().detachNode(); // suppress empty header 

А вот решение с использованием пружинного-WS WebServiceMessageCallback, основанный на this thread:

public void marshalWithSoapActionHeader(MyObject o) { 

    webServiceTemplate.marshalSendAndReceive(o, new WebServiceMessageCallback() { 

     public void doWithMessage(WebServiceMessage message) { 
      SaajSoapMessage saajSoapMessage = (SaajSoapMessage) message; 
      SOAPMessage soapMessage = saajSoapMessage.getSaajMessage(); 
      SOAPPart soapPart = soapMessage.getSOAPPart(); 
      SOAPEnvelope envelope = soapPart.getEnvelope(); 
      SOAPHeader header = soapMessage.getSOAPHeader(); 
      header.detachNode(); 
     } 
    }); 
} 
Смежные вопросы