Scheint eine einfache Aufgabe zu sein, aber ich kann mich nicht damit abfinden.XML-Antwort von einem REST-Aufruf in Spring-Integration konsumieren
Ich habe eine Spring-Integrationskette, die einen externen Webservice aufruft, der ein XML zurückgibt. Ich möchte diese XML-Antwort in einem nachgelagerten XpathRouter verwenden.
Welchen erwarteten Antworttyp sollte ich verwenden?
<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>
Es scheint nicht, wie die xpath-router
können die XML durch den Webservice zurück verbrauchen. Wenn ich den Router mit einem Haltepunkt in der folgenden Zeile debuggen:
Node node = this.converter.convertToNode(message.getPayload());
Der Knoten ist null, obwohl die Nachricht gültiges XML enthält.
Liegt es daran, dass ich nicht das richtige expected-response-type
setze?
Hier ist die Antwort XML ich aus dem Dienst erhalten:
<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>
So können Sie Ihre eigene Antwort jetzt akzeptieren! –