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 ![]() |
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. |
