当前位置: 首页 > 面试题库 >

具有两个元素的Spring Update SOAP标头

楚雪松
2023-03-14
问题内容

我正在使用Spring-WS和WebServiceTemplate来调用SOAP WebService。目前,我在更新SOAP标头时遇到问题。

下面是SOAP请求的完整结构:

<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标头

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(new StringSource(soapHeaderStr), ((SoapMessage) message).getSoapHeader().getResult());

但是当我尝试使用两个元素(字符串)更新标头时,出现以下错误消息:

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.'

原因是对于SecurityMessageData元素没有根元素,也不应该。

请帮助我如何在这种情况下更新标题?

谢谢


问题答案:

最后,解决了!

我在转换时添加了虚拟根,然后从SOAP Header中删除了该虚拟根。



 类似资料:
  • 我在Wordpress和Visual Composer一起工作,我有一个切换容器。基本上,我点击每个选项卡,下面的内容就会发生变化。我想通过CSS为每个选项卡分配一个不同的图像作为背景。但是,我已经实现了这一点,因为每个选项卡都有相同的类名(由visual composer赋予它),所以图像是相同的。我需要弄清楚如何给每个选项卡一个唯一的id,这样我就可以给每个选项卡一个自己的背景图像--但是由于

  • 问题内容: 是否有一种方法可以根据将class属性的值设置为两个特定的类来选择CSS元素。例如,假设我有3个div: 基于它是foo AND bar类的成员,我可以写什么CSS来选择列表中的第二个元素? 问题答案: 链接两个类选择器(之间没有空格): 如果仍然需要处理IE6之类的古老浏览器,请注意,它无法正确读取链接的类选择器:无论您列出什么其他类,它都只会读取 最后一个 类选择器(在这种情况下)

  • Spring能做那样的事吗?当它只映射一件事时,我让它很容易工作。例如: @RequestMapping(“Hello-World”) 工作并将匹配/hello-world.do,/anything/hello-world.do,但我的问题是,如果hello-world位于/blog路径中,我将只匹配hello-world,并且每当我使用类似: 这看起来应该可以工作(这是我唯一的请求映射),但是:

  • 如何检查两个数组(循环)是否具有相同顺序的相同元素。例如,让我们以数组[1,2,3,4]为例。 对于[2,3,4,1]、[3,4,1,2]、[4,1,2,3],测试应返回true,但对于[1,3,2,4]、[1,4,2,3]或[1,2,3,5]则不返回true。 我最初的方法是找到第一个匹配项——每个数组中一个相等的元素——并将这两个元素视为各自数组的初始元素,我逐个比较了数组的其余元素。 有没有

  • 检查的元素。尝试用各种方法在代码中查找元素。但一切都不起作用。请建议在应用程序中编辑PIN号码的xpath应该是什么 null Driver.FindElementByXPath(“//Android.Widget.FrameLayout//Android.View.View[@index='3']//Android.Widget.EditText”)