具有琐碎特征的SOAP WS:
-WSDL地址:
http://<ip>:<port>/service/name?wsdl
-目标方法名称:
getData(...)
Spring集成配置(“ spring-context.xml”)的一部分,用于调用WS:
...
<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-integration以正确调用WS?
答案 0 :(得分:0)
问题是未调用WS。
这个问题看起来如何?没有至少一些堆栈跟踪,我们什么也不能说。
是否正确使用了WS方法的名称?
SoapAction
值是特定于供应商的。您必须咨询提供的WS,以确定应该在标题中显示什么以及如何显示。
如何传递参数?
不确定nay参数。是的,您也可以发送一些query params,但是看起来好像不是您的问题。请更具体些。
顺便说一句,如果您发送一些POJO(例如您的org.types.GetDataRequest
),则需要使用marshaling网关而不是简单的网关:
<int-ws:outbound-gateway marshaller="someMarshaller" uri="http://<ip>:<port>/service/name"/>
当然不能确定,如果您有一个好的XSD通用模型,则基于该WSDL中提供的信息...