如何从SOAP消息中删除空标头? [英] How to remove empty header from SOAP message?
本文介绍了如何从SOAP消息中删除空标头?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用Spring-WS来使用Web服务,该服务比较SOAP信封是否具有空的 header 元素.我发现默认的SOAPMessage实现会添加一个.
I am using Spring-WS for consuming Webservice which compains if SOAP envelop has empty header element. I figured out that default SOAPMessage implementation adds one.
如何删除它?
预先感谢
推荐答案
http://docs.oracle.com/javaee/5/tutorial/doc/bnbhr.html :
下一行是空的SOAP标头.您可以通过致电将其删除 getSOAPHeader调用之后的header.detachNode.
The next line is an empty SOAP header. You could remove it by calling header.detachNode after the getSOAPHeader call.
这是普通SAAJ中的解决方案:
So here is the solution in plain SAAJ:
MessageFactory messageFactory = MessageFactory.newInstance("SOAP 1.2 Protocol");
SOAPMessage message = messageFactory.createMessage();
message.getSOAPHeader().detachNode(); // suppress empty header
And here is the solution using spring-ws WebServiceMessageCallback based on 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();
}
});
}
这篇关于如何从SOAP消息中删除空标头?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文