Java springupdatesoap头包含两个元素
我正在使用SpringWS和WebServiceTemplate调用SOAP Web服务。 目前,我在更新SOAP头时面临一个问题 下面是SOAP请求的完整结构:Java springupdatesoap头包含两个元素,java,transform,webservice-client,soapheader,xslt,Java,Transform,Webservice Client,Soapheader,Xslt,我正在使用SpringWS和WebServiceTemplate调用SOAP Web服务。 目前,我在更新SOAP头时面临一个问题 下面是SOAP请求的完整结构: <SOAP:envlope> <SOAP:Header> <Security> <username>?</username> <password>?</password>
<SOAP:envlope>
<SOAP:Header>
<Security>
<username>?</username>
<password>?</password>
</Security>
<MessageData>
<ClientIP>?</ClientIP>
</MessageData>
</SOAP:Header>
<SOAP:Body>
<Login/>
</SOAP:Body>
</SOAP:envlope>
但当我试图用两个元素(字符串)更新标题时,我收到以下错误消息:
SOAPHeaderString
<Security>
<username>?</username>
<password>?</password>
</Security>
<MessageData>
<ClientIP>?</ClientIP>
</MessageData>
原因是Security
和MessageData
元素没有根元素,因此不应该有根元素
请帮助我如何在这种情况下更新标题
谢谢终于解决了
我在转换时添加了伪根,然后从SOAP头中删除了该伪根。也有同样的问题,并设法解决了它,请参阅 基本上,您可以像这样将这两个元素直接封送到soap头中,而不是使用转换器:
webServiceTemplate.getMarshaller().marshal(element1,soapHeader.getResult());
webServiceTemplate.getMarshaller().marshal(element2,soapHeader.getResult());
这里提到的marshaller是“org.springframework.oxm.jaxb.Jaxb2Marshaller”。上面的元素1和2是使用生成的对象工厂类创建的jaxb元素
[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.'
webServiceTemplate.getMarshaller().marshal(element1,soapHeader.getResult());
webServiceTemplate.getMarshaller().marshal(element2,soapHeader.getResult());