[英]Spring Webservices Adding Elements to Soap Request
In my java project, I am using Spring Webservices to send an xml message to an endpoint that my vendor has supplied. 在我的Java项目中,我正在使用Spring Webservices向供应商提供的端点发送xml消息。 (They asked us to do it this way )
(他们要求我们这样做)
However I noticed 1 of my requests was failing. 但是我注意到我的请求之一失败了。 On further analysis by posting the request to request bin - I noticed that certain elements were being adding to my soap message with the prefix of SOAP-ENV
通过发布请求到请求bin的进一步分析-我注意到某些元素正在添加到带有SOAP-ENV前缀的我的soap消息中
My question is - is it possible to use spring webservices but not have these extra elements added to my soap message 我的问题是-是否可以使用spring webservices但不将这些额外的元素添加到我的soap消息中
Code To Call Webservice 调用Web服务的代码
public void callWebservice(String corpId) { 公共无效的callWebservice(String corpId){
StringBuilder soapMessage = FileUtil.readFileContent(BASE_TALEO_CONFIG_LOCATION + "/CallWebservice.xml");
StreamSource source = new StreamSource(new StringReader(soapMessage.toString()));
ByteArrayOutputStream bos = new ByteArrayOutputStream();
StreamResult result = new StreamResult(bos);
boolean webserviceResult = webServiceTemplate.getWebServiceTemplate().sendSourceAndReceiveToResult(baseURL, source, result);
System.out.println("webserviceResult:" + webserviceResult);
} }
XML Message I want to send 我要发送的XML消息
<retrieve:retrieveEntities xmlns:retrieve="http://www.test/2009/04/retrieve">
<retrieve:mappingVersion>http://www.test.com/2009/04</retrieve:mappingVersion>
<retrieve:query>
</retrieve:query>
<retrieve:attributes />
</retrieve:retrieveEntities>
Message in Request Bin 请求箱中的消息
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<retrieve:retrieveEntities xmlns:retrieve="http://www.test/2009/04/retrieve"><retrieve:mappingVersion>http://www.test.com/2009/04</retrieve:mappingVersion><retrieve:query/>
<retrieve:attributes/>
</retrieve:retrieveEntities>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Thanks Damien 谢谢达米安
The web service you are calling isn't a SOAP web service but a plain XML based web service. 您要调用的Web服务不是SOAP Web服务,而是基于XML的普通Web服务。 By default the
WebServiceTemplate
assumes that you are sending SOAP messages and as such creates a SaajSoapMessageFactory
. 默认情况下,
WebServiceTemplate
假定您正在发送SOAP消息,因此将创建一个SaajSoapMessageFactory
。
If you don't want to send SOAP messages you need to configure the WebServiceTemplate
to send plain XML messages. 如果您不想发送SOAP消息,则需要将
WebServiceTemplate
配置为发送纯XML消息。 For this add the DomPoxMessageFactory
as message factory to the WebServiceTemplate
. 为此,将
DomPoxMessageFactory
作为消息工厂添加到WebServiceTemplate
。 (Judging on the code you are using the WebServiceGateway
base class. (根据您正在使用
WebServiceGateway
基类的代码进行判断。
<bean id="yourGateway" class="your class">
<property name="messageFactory">
<bean class="org.springframework.ws.pox.dom.DomPoxMessageFactory" />
</property>
</bean>
See also this section of the reference guide. 另请参阅参考指南的本部分 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.