Spring集成:如何正确调用SOAPWeb服务



具有琐碎特征的SOAP WS:
-WSDL地址:

http://<ip>:<port>/service/name?wsdl

-目标方法名称:

getData(...)

调用WS-的Spring集成配置('sspring-context.xml'(的一部分

...
<int:chain input-channel="data" output-channel="stdout">  
<!-- transform message to request -->
<int:transformer
ref="soapRequestTransformer" 
method="createReq">
</int:transformer>
<!-- define the WS method to be called (getData) -->
<int:header-enricher>
<int:header 
name="SoapAction" 
value="http://<ip>:<port>/service/name/getData"/>
</int:header-enricher>
<!-- call WS -->
<int-ws:outbound-gateway uri="http://<ip>:<port>/service/name"/>  
</int:chain>
...

变压器(成功(后,我有请求对象:

request.getHeaders(): {sequenceNumber=1, correlationId=2bfb560c- 
96ba-9c35-96dc-ba16104604b9, id=32f43a24-dee2-461c-a9b9-92c8ee37aaec, 
sequenceSize=12, timestamp=1532509142590}
request.getPayload(): org.types.GetDataRequest@77409e4b

如何正确设置spring集成以正确调用WS?

问题是没有调用WS。

这个问题看起来怎么样?如果没有一些堆栈跟踪,我们什么都说不出来。

WS方法的名称使用正确吗?

SoapAction值是特定于供应商的。您必须查阅提供的WS,以确定应该在该标头中显示什么以及如何显示。

参数是如何传递的?

不确定任何参数。是的,你也可以发送一些查询参数,但看起来这不是你的问题。请说得更具体一些。

顺便说一句,如果你发送一些POJO(例如你的org.types.GetDataRequest(,你需要使用封送网关,而不是简单的:

<int-ws:outbound-gateway marshaller="someMarshaller" uri="http://<ip>:<port>/service/name"/>  

当然,不确定,如果您有一个好的XSD genated模型,基于WSDL中提供的信息。。。

最新更新