具有两个元素的Spring更新SOAP标头 [英] Spring Update SOAP Header with Two Elements
问题描述
我使用Spring-WS和WebServiceTemplate来调用SOAP WebService。
目前,我在更新SOAP标头时遇到问题。
I am using Spring-WS and WebServiceTemplate to call SOAP WebService. Currently, i am facing issue while updating SOAP header.
以下是SOAP请求的完整结构:
Below is complete structure of SOAP request:
<SOAP:envlope>
<SOAP:Header>
<Security>
<username>?</username>
<password>?</password>
</Security>
<MessageData>
<ClientIP>?</ClientIP>
</MessageData>
</SOAP:Header>
<SOAP:Body>
<Login/>
</SOAP:Body>
</SOAP:envlope>
如上所示,我需要在Header中包含2个元素。我有以下代码来更新WebServiceTemplate的SOAP标头
As shown above, i need to include 2 elements in Header. I have below code to update the Header of SOAP for WebServiceTemplate
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(new StringSource(soapHeaderStr), ((SoapMessage) message).getSoapHeader().getResult());
但当我尝试使用两个元素(字符串)更新标头时,我得到以下错误消息:
But i got below error message when i tried to update header with two elements (String):
SOAPHeaderString
<Security>
<username>?</username>
<password>?</password>
</Security>
<MessageData>
<ClientIP>?</ClientIP>
</MessageData>
错误
[Fatal Error] :1:197: The markup in the document following the root element must be well-formed.
ERROR: 'The markup in the document following the root element must be well-formed.'
原因是安全性
和 MessageData
元素没有根元素,它不应该是。
The reason is that there is no root element for Security
and MessageData
elements and it shouldn't be.
请帮助我在这种情况下如何更新标题?
Please help how can i update header in such case?
谢谢
推荐答案
最后,解决了!!
我在转换时添加了伪根,然后从中删除了伪根SOAP Header。
I added dummy root while transformation and then removed that dummy root from SOAP Header.
这篇关于具有两个元素的Spring更新SOAP标头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!