2017-02-10 3 views
1

単純なタスクと思われますが、私はそれを回避できません。SpringインテグレーションでREST呼び出しからXMLレスポンスを消費する

私はXMLを返す外部Webサービスを呼び出すSpring統合チェーンを持っています。下流の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は、Webサービスによって返された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> 

答えて

2

[OK]を、私は私のミスを見つけた - それは、XPath式で実際にしました。ディープサーチを有効にするには、//order/statusだったはずです。

java.lang.String期待応答型はXML XpathRouterでうまく動作します。

ありがとうございました

+0

あなた自身の回答を今すぐ受け入れることができます! –

関連する問題