【发布时间】:2017-05-27 23:49:33
【问题描述】:
根据
http://docs.oracle.com/javaee/5/tutorial/doc/bnbhr.html
SOAPMessage message = messageFactory.createMessage();
SOAPHeader header = message.getSOAPHeader();
SOAPBody body = message.getSOAPBody();
这是它生成的 XML:
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
...
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
但我的实现会产生类似的 XML 代码
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
...
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
没有<SOAP-ENV:Header/> 标签。即使它是空的,我也需要明确的标题标签。我怎样才能生成这样的 XML。
这是我的代码
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage message = messageFactory.createMessage();
SOAPHeader header = message.getSOAPHeader();
marshaller.marshal(someObject, message.getSOAPBody());
message.saveChanges();
return message; //save it as request. for printing in logs
我用
ByteArrayOutputStream in = new ByteArrayOutputStream();
request.writeTo(in);
logger.debug("Sending: " + in);
在我的控制台上打印它。
【问题讨论】:
-
标头在规范中是可选的。如果你需要它——你不应该——你将不得不在那里放置一个非空白空间或其他东西。
-
您能解释一下如何回答吗? @stdunbar