zeg*_*ine 6 java soap spring-ws webservice-client soapheader
我使用Spring-WS用于消费web服务这孔潘若SOAP信封有空头元素.我发现默认的SOAPMessage实现添加了一个.
我该如何删除它?
提前致谢
http://docs.oracle.com/javaee/5/tutorial/doc/bnbhr.html:
下一行是一个空的SOAP标头.您可以通过在getSOAPHeader调用后调用header.detachNode来删除它.
所以这是普通SAAJ的解决方案:
MessageFactory messageFactory = MessageFactory.newInstance("SOAP 1.2 Protocol");
SOAPMessage message = messageFactory.createMessage();
message.getSOAPHeader().detachNode(); // suppress empty header
Run Code Online (Sandbox Code Playgroud)
以下是使用基于此线程的 spring-ws WebServiceMessageCallback的解决方案:
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();
}
});
}
Run Code Online (Sandbox Code Playgroud)