【发布时间】:2018-07-20 18:10:00
【问题描述】:
我们正在使用 ws-outbound-gateway 通过以下方式调用 web 服务。
<ws:outbound-gateway uri="http://localhost:8080/test" message-factory="messageFactory" message-sender="messageSender" ignore-empty-responses="false" requires-reply="true" />
<bean name="messageSender" class="org.springframework.ws.transport.http.HttpComponentsMessageSender">
</bean>
<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
<property name="soapVersion">
<util:constant static-field="org.springframework.ws.soap.SoapVersion.SOAP_11"/>
</property>
</bean>
如果请求xml是下面的方式,那就完美了。
<?xml version="1.0" encoding="UTF-8"?>
<m:processRequest xmlns:m="http://ws.test.com">
<request>
<dealerId>999852</dealerId>
.......
.......
</request>
</m:processRequest>
如果我在请求中添加 SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 和 SOAP-ENV:Body xml,它会抛出如下错误:
org.springframework.ws.client.WebServiceTransportException:未找到 [404]
堆栈跟踪:
org.springframework.ws.client.WebServiceTransportException: Not Found [404]
at org.springframework.ws.client.core.WebServiceTemplate.handleError(WebServiceTemplate.java:590)
at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:514)
at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:465)
at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:420)
at org.springframework.ws.client.core.WebServiceTemplate.sendSourceAndReceiveToResult(WebServiceTemplate.java:366)
at org.springframework.ws.client.core.WebServiceTemplate.sendSourceAndReceiveToResult(WebServiceTemplate.java:351)
at com.railinc.notifserv.services.findusrail.impl.FindUsRailContactServiceImpl.getFindUsRailContacts(FindUsRailContactServiceImpl.java:31)
at com.railinc.notifserv.services.findusrail.impl.FindUsRailContactServiceImplTest.testGetFindUsRailContacts(FindUsRailContactServiceImplTest.java:9)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
失败的错误 xml:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<m:processRequest xmlns:m="http://ws.test.com">
<request>
<dealerId>999852</dealerId>
.......
.......
</request>
</m:processRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
有没有办法使用 ws-outbound-gateway 将请求 xml 与soap Envelope 一起发送?
【问题讨论】: