Beispiel: Aufruf eines SOAP-Webservice
In diesem Beispiel sehen Sie, wie einen Webservice, anhand einer Konstante als Input abfragen können. Der Webservice selbst wurde mit Hilfe von MapForce implementiert. Dies dient nur zu Demonstrationszwecken - der Webservice könnte auch mit jeder anderen Technologie implementiert werden, die ein kompatibles Protokoll unterstützt.
Das unten gezeigte Mapping ist Teil des Mapping-Projekts TimeService.mfp, das im Ordner <%EXFOLDER%TimeService zur Verfügung steht. Die Projektdatei TimeService2.mfp im Ordner <Dokumente>\Altova\MapForce2025\MapForceExamples\TimeserviceWsdl2 unterstützt WSDL 2.0.
So zeigen Sie an, wie der Webservice implementiert ist:
1. | Wählen Sie Datei | Öffnen und anschließend die Datei TimeService.mfp im Ordner <Dokumente>\Altova\MapForce2025\MapForceExamples\Timeservice. Die mit dem Projekt verknüpften Dateien werden daraufhin im Projektfenster geladen. |
2. | Doppelklicken Sie im Projektfenster auf den Eintrag getCityTime.mfd. |
Das Mapping getCityTime.mfd erhält einen Stadtnamen (city name) als Input und gibt im Output die aktuelle Uhrzeit zurück. Wenn die Stadt nicht "Boston" ist, wird ein WSDL-Fehler zurückgegeben. Das Mapping erhält die Input-Daten aus der Datei getCityTimeRequest.xml im Verzeichnis <Dokumente>\Altova\MapForce2025\MapForceExamples\TimeService. Wenn Sie auf die Komponente getCityTimeSoapIn doppelklicken, sehen Sie, dass diese Datei als Datenquelle definiert ist.
In diesem Beispiel gehen wir davon aus, dass dieses Webservice-Projekt bereits kompiliert und auf einem Webserver bereitgestellt wurde, den Sie nun in diesem Beispiel in den folgenden Schritten aufrufen werden. Sie finden dazu unter http://nanonull.com/TimeService/TimeService.asmx einen Demo Online Service. Beispiele, wie Sie solche Webservices mit MapForce erstellen finden Sie unter Generieren eines SOAP Webservice (Java).
So fügen Sie den Webservice zum Mapping hinzu:
1. | Wählen Sie Datei | Neu, klicken Sie auf das Mapping-Symbol und bestätigen Sie mit OK. |
2. | Wählen Sie die Menüoption Einfügen | Webservice-Funktion... oder klicken Sie in der Symbolleiste auf das Symbol. |
3. | Klicken Sie auf die Schaltfläche Durchsuchen, um die WSDL-Definitionsdatei auszuwählen; wählen Sie im TimeService-Verzeichnis TimeService.wsdl aus und klicken Sie auf die Schaltfläche "Öffnen". |
4. | Wenn Sie aufgefordert werden, einen Webservice Endpoint auszuwählen, klicken Sie auf TimeServiceSoap. |
5. | Wenn Sie aufgefordert werden, eine Webservice-Operation auszuwählen, klicken Sie auf getCityTime. |
6. | Belassen Sie die Einstellungen unverändert und klicken Sie auf OK. Nähere Informationen finden Sie unter Webservice-Call-Einstellungen. |
Die Webservice-Funktion getCityTime wird als einzelne Komponente eingefügt. Beachten Sie: Diese Komponente steht für alle acht Komponenten, aus denen die im WSDL-Projekt gespeicherte Datei getCityTime.mfd besteht.
Im linken Abschnitt der Komponente ist die Dateneingabe (SoapIn) definiert, während auf der rechten Seite die Datenausgabe (SoapOut) definiert ist. Dieser Abschnitt kann auch einen Fehler-Abschnitt enthalten, wenn in der WSDL-Datei einer definiert wurde.
So rufen Sie den Webservice auf:
1. | Fügen Sie die Komponente ein, die die Input-Daten bereitstellen soll, z.B. eine Konstante, Text oder eine Schemakomponente. Fügen Sie in diesem Fall eine Konstantenkomponente ein und geben Sie als Input String "Boston" ein. |
2. | Verbinden Sie die Konstante mit dem Datenelement n0:city. |
3. | Fügen Sie eine einfache Textkomponente ein (Klicken Sie im Menü Funktion auf Output-Komponente einfügen). |
4. | Verbinden Sie n0:getCityTimeResult mit der Output-Komponente. |
5. | Klicken Sie mit der rechten Maustaste im Mapping auf die Komponente "getCityTime" und wählen Sie den Befehl Eigenschaften. Daraufhin wird das Dialogfeld "Webservice-Call-Einstellungen" geöffnet. Geben Sie ins Feld URL http://nanonull.com/TimeService/TimeService.asmx ein (es handelt sich hierbei um einen mit MapForce erstellten Demo-Online-Webservice, siehe Implementieren von SOAP-Webservices). |
6. | Klicken Sie auf das Fenster Ausgabe. Wie unten gezeigt, wird im Fenster Ausgabe die aktuelle Uhrzeit in Boston angezeigt. |
Anmerkung: Der Eingabewert der Webservice-Funktion hat Vorrang vor der Datenquelle des ursprünglichen Mappings. So hat z.B. der Wert der Konstante "Boston" Vorrang vor der Datenquelle getCityTimeRequest.xml im Originalmapping.
So mappen Sie Webservice-Fehler:
1. | Wählen Sie den Befehl Einfügen | Ausnahme oder klicken Sie in der Symbolleiste auf das Symbol "Ausnahmeereignis" . |
2. | Mappen Sie das Datenelement Fault: auf das Datenelement throw der Ausnahmeereigniskomponente. |
3. | Mappen Sie das Datenelement n0:errorText auf das Datenelement error-text der Ausnahmeereigniskomponente. |