在我的java项目中,我使用Spring Webservices将xml消息发送到我的供应商提供的端点。 (他们要求我们这样做)
但是我注意到我的一个请求失败了。通过发布请求bin的请求进一步分析 - 我注意到某些元素正在添加到我的soap消息中,前缀为SOAP-ENV
我的问题是 - 是否可以使用spring webservices但没有将这些额外元素添加到我的soap消息中
代码调用Webservice
public void 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消息
<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>
请求文件夹中的邮件
<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>
由于 达明
答案 0 :(得分:1)
您调用的Web服务不是SOAP Web服务,而是基于纯XML的Web服务。默认情况下,WebServiceTemplate
假定您正在发送SOAP消息,因此会创建SaajSoapMessageFactory
。
如果您不想发送SOAP消息,则需要配置WebServiceTemplate
以发送纯XML消息。为此,将DomPoxMessageFactory
作为消息工厂添加到WebServiceTemplate
。 (判断您使用WebServiceGateway
基类的代码。
<bean id="yourGateway" class="your class">
<property name="messageFactory">
<bean class="org.springframework.ws.pox.dom.DomPoxMessageFactory" />
</property>
</bean>
另见参考指南的this section。