Altova MapForce 2024 Enterprise Edition

Behandlung der HTTP Response auf Basis von Bedingungen

Zur Startseite Zurück Nach oben Weiter

Angenommen, ein Webservice gibt im Response Body abhängig vom Wert des Accept HTTP Request Headers entweder einen JSON- oder einen XML-Inhaltstyp zurück. Zusätzlich dazu gibt der Webservice im Fall eines Fehlers (Fehlercode > 299) eventuell einen nicht definierten Inhaltstyp zurück. In einem solchen Fall ist es unter Umständen sinnvoll, die Response anhand des HTTP-Statuscodes und Inhaltstyps auf Basis von Bedingungen zu behandeln.

 

Um im selben Mapping sowohl die JSON- als auch die XML-Response des Webservice zu behandeln, könnten Sie mehrere Body-Datenelemente erstellen. Klicken Sie dazu mit der rechten Maustaste in der Komponente auf das Body-Datenelement und wählen Sie im Kontextmenü den Befehl Body-Node hinzufügen nach.

 

Eine Webservice-Komponente mit mehreren für das obige Szenario konfigurierten Body-Datenelementen könnte im Mapping folgendermaßen aussehen:

mf_ws_conditional_body_04

Das oben gezeigte Mapping erhält zwei Input-Parameter. Er erste Parameter liefert den erwarteten Inhaltstyp. Sein Wert kann application/json oder application/xml sein. Der zweite Parameter liefert die numerische ID des abzurufenden Produkts.

 

Wenn Sie den Wert application/json als Input-Parameter bereitstellen, klicken Sie auf die Schaltfläche Vorschau ic-preview-buttondown der JSON-Zielkomponente. Wenn der Wert des Input-Parameters hingegen application/xml ist, klicken Sie auf die Schaltfläche Vorschau ic-preview-buttondown der XML-Zielkomponente. Die jeweilige Ausgabedatei (JSON oder XML) wird generiert, wenn der Webservice-Aufruf erfolgreich war.

 

Wenn der Webservice einen Statuscode großer als 300 (Fehler) zurückgibt, gelangt die HTTP Response zum dritten Body-Datenelement. Da wir den genauen Inhaltstyp nicht kennen, werden wir ihn mit Hilfe der Funktion decode-mime-entity dekodieren. Der Wert des Zeichensatzes wird vom Webservice im Response Header nicht bereitgestellt, daher wurde der Konstantenwert utf-8 mit der Dekodierungsfunktion verbunden.

 

Jedes der drei Response Body-Datenelemente in der obigen Komponente wird durch Klick auf die Schaltfläche excel1-compicon neben dem jeweiligen Body-Element konfiguriert.

 

1.Im ersten Body-Element wird als application/json zurückgegebener Inhalt behandelt, wenn der Statuscode zwischen 200 und 299 liegt. Außerdem wurde das Schema der erwarteten JSON Response-Struktur definiert.

mf_ws_conditional_body_01

2.Im zweiten Body-Element wird als application/xml zurückgegebener Inhalt behandelt, wenn der Statuscode zwischen 200 und 299 liegt. Außerdem wurde das Schema der erwarteten XML Response-Struktur definiert.

mf_ws_conditional_body_02

3.Im dritten Body-Element wird als */* zurückgegebener Inhalt behandelt, wenn der Webservice einen Fehler-Statuscode (zwischen 300 und 599) zurückgibt.

mf_ws_conditional_body_03

© 2017-2023 Altova GmbH