Beispiel: Aufruf eines SOAP-Webservice

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Aufrufen von Webservices >

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\MapForce2019\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\MapForce2019\MapForceExamples\Timeservice. Die mit dem Projekt verknüpften Dateien werden daraufhin im Projektfenster geladen.

 

mf_timeservice_01

 

2.Doppelklicken Sie im Projektfenster auf den Eintrag getCityTime.mfd.

 mf_timeservice_02

 

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\MapForce2019\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 Beispiel: Generieren von SOAP-Webservices (C#) und Beispiel: Generieren von SOAP-Webservices (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 ic-wsdl-func 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.

 

mf_timeservice_03

 

5.Wenn Sie aufgefordert werden, eine Webservice-Operation auszuwählen, klicken Sie auf getCityTime.

 

mf_timeservice_04

 

 

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.

 

mf_timeservice_05

 

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.

 

mf_timeservice_06

 

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.

 

mf_timeservice_07

 

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 Register Ausgabe. Wie unten gezeigt, wird im Fenster Ausgabe die aktuelle Uhrzeit in Boston  angezeigt.

 

mf_timeservice_08

 

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" ic-except.
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.

 

mf_timeservice_09


© 2019 Altova GmbH