Java 如何从SOAP消息中删除空标头?
我使用SpringWS来消费Webservice,如果SOAP信封有空的头元素,它将与之相比较。我发现默认的SOAPMessage实现增加了一个 我怎样才能删除它 提前感谢: 下一行是一个空的SOAP头。您可以通过调用 getSOAPHeader调用后的header.detachNode 下面是普通SAAJ中的解决方案:Java 如何从SOAP消息中删除空标头?,java,soap,webservice-client,spring-ws,soapheader,Java,Soap,Webservice Client,Spring Ws,Soapheader,我使用SpringWS来消费Webservice,如果SOAP信封有空的头元素,它将与之相比较。我发现默认的SOAPMessage实现增加了一个 我怎样才能删除它 提前感谢: 下一行是一个空的SOAP头。您可以通过调用 getSOAPHeader调用后的header.detachNode 下面是普通SAAJ中的解决方案: MessageFactory messageFactory = MessageFactory.newInstance("SOAP 1.2 Protocol");
MessageFactory messageFactory = MessageFactory.newInstance("SOAP 1.2 Protocol");
SOAPMessage message = messageFactory.createMessage();
message.getSOAPHeader().detachNode(); // suppress empty header
下面是使用spring ws的解决方案,它基于:
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();
}
});
}