具有两个元素的Spring更新SOAP标头 [英] Spring Update SOAP Header with Two Elements

查看:180
本文介绍了具有两个元素的Spring更新SOAP标头的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆