似乎是一项简单的任务,但我无法理解它。
我有一个Spring集成链,它调用外部Web服务,返回XML。我想在下游的XpathRouter中使用该XML响应。
我应该使用什么预期响应类型?
<int:chain input-channel="filesChannel">
<!-- ... some previous components in the chain -->
<int-http:outbound-gateway
http-method="POST"
url="http://web/service/url"
expected-response-type="java.lang.String" />
<int-xml:xpath-router default-output-channel="resultChannel">
<int-xml:xpath-expression expression="/order/status" />
<int-xml:mapping value="Error" channel="importErrorChannel" />
</int-xml:xpath-router>
</int:chain>
xpath-router
似乎不能使用webservice返回的XML。当我使用以下行的断点调试路由器时:
Node node = this.converter.convertToNode(message.getPayload());
节点为空,但消息确实包含有效的XML。
是因为我没有设置正确的expected-response-type
?
以下是我从服务中收到的响应XML:
<apiResponse version="1.0">
<orders>
<order>
<orderReference>test_2_3045342</orderReference>
<status>Error</status>
<errors>
<error>
<errorCode>1100</errorCode>
<errorMessage><![CDATA[ "Field is required: dropWindow" ]]></errorMessage>
</error>
</errors>
</order>
</orders>
</apiResponse>
答案 0 :(得分:2)
好的,我发现了我的错误 - 它实际上是在XPATH表达式中。应该//order/status
启用深度搜索。
使用XML XpathRouter,java.lang.String
期望响应类型可以正常工作。
由于