2017-02-10 1 views
1

Кажется, что это простая задача, но я не могу обойти ее.Потребление ответа XML от вызова REST весной Интеграция

У меня есть цепочка интеграции Spring, которая вызывает внешний Web-сервис, который возвращает XML. Я хотел бы использовать этот ответ XML в нисходящем XpathRouter.

Какой тип ожидаемого ответа следует использовать?

<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 может потреблять 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

Хорошо, я нашел свою ошибку - это было на самом деле в выражении XPATH. Для обеспечения глубокого поиска должно было быть //order/status.

java.lang.String Ожидаемый ответ-ответ отлично работает с XML XpathRouter.

Thanks

+0

Итак, вы можете принять ваш собственный ответ прямо сейчас! –

Смежные вопросы