CALL WEB SERVICE

4D - Documentation   Français   English   German   English   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next

Version 11 (Geändert)


CALL WEB SERVICE (ZugriffURL; SoapAktion; MethodenName; Namensraum{; KomplexTyp{; *}})

ParameterTypBeschreibung
ZugriffURLStringZugriffURL zu Web Service
SoapAktionStringInhalt des Feldes SOAPAktion
MethodenNameStringName der Methode
NamensraumStringNamensraum
KomplexTypLange GanzzahlKonfiguration komplexer Typen
(ohne Angabe einfache Typen)
**Mit *: Verbindung nicht schließen

Beschreibung

Der Befehl CALL WEB SERVICE ruft einen Web Service durch Senden einer HTTP Anfrage auf. Diese Anfrage enthält die SOAP Meldung, die zuvor mit dem Befehl SET WEB SERVICE PARAMETER erstellt wurde.

Jeder nachfolgende Aufruf von SET WEB SERVICE PARAMETER löst die Erstellung einer neuen Anfrage aus. Die Ausführung von CALL WEB SERVICE entfernt die Ergebnisse von zuvor aufgerufenen Web Services und ersetzt sie durch die neuen Ergebnisse.

In ZugriffURL übergeben Sie die vollständige URL für den Zugriff auf den Web Service. Verwechseln Sie diese URL nicht mit der für die WSDL Datei, welche den Web Service beschreibt.

In SoapAktion übergeben Sie den Inhalt des Feldes SOAPAction der Anfrage. Es enthält in der Regel den Wert "ServiceName#MethodName".

In MethodenName übergeben Sie den Namen der entfernten Methode, d.h. die zum Web Service gehört, welche Sie ausführen wollen.

In Namensraum übergeben Sie den XML Namensraum für die SOAP Anfrage. Weitere Informationen dazu finden Sie im Handbuch 4th Dimension Designmodus.

Der optionale Parameter KomplexTyp spezifiziert die Konfiguration der empfangenen bzw. gesendeten Parameter des Web Service, die mit den Befehlen SET WEB SERVICE PARAMETER und GET WEB SERVICE RESULT definiert wurden. Der Wert von KomplexTyp richtet sich nach dem Publikationsmodus des Web Service (DOC oder RPC, siehe Handbuch 4D Designmodus) und nach seinen anderen Parametern.

In KomplexTyp müssen Sie eine der vordefinierten Konstanten unter dem Thema "Web Services (Client)" übergeben:

KonstanteTypWert
Web Service DynamicLange Ganzzahl0 (Standard)
Web Service Manual InLange Ganzzahl1
Web Service Manual OutLange Ganzzahl2
Web Service ManualLange Ganzzahl3

Jede Konstante entspricht der Einstellung eines Web Service. Das ist die Kombination aus Publikationsmodus (RPC/DOC) und integrierter Parameter (Eingabe/Ausgabe, einfach oder komplex).

Zur Erinnerung: Die Merkmale der Eingangs- bzw. Ausgangsparameter werden aus Sicht der Proxy-Methode/Web Service bewertet.

Ein "input" Parameter ist ein Wert, welcher der Proxy-Methode, und so dem Web Service übergeben wird,

Ein "output" Parameter wird vom Web Service und so von der Proxy-Methode zurückgegeben (in der Regel via $0).

Nachfolgende Tabelle zeigt die möglichen Einstellungen mit den dazugehörigen Konstanten:

Eingabeparameter
AusgabeparameterEinfachKomplex
SimpleWeb Service DynamicWeb Service Manual In
(RPC Modus)(RPC Modus)
ComplexWeb Service Manual OutWeb Service Manual
(RPC Modus)(RPC oder DOC Modus)

Sie können also diese Einstellungen implementieren. In allen Fällen verwaltet 4D die Formatierung der SOAP Anfrage, die an den Web Service gesendet wird und seinen „envelope" (Umschlag). Es ist Ihre Aufgabe, den Inhalt der Anfrage gemäß der verwendeten Einstellung zu formatieren.

Hinweis: Auch wenn Datenarrays komplexe XML Typen sind, behandelt 4D diese als einfache Typen.

RPC Modus, einfache Ein- und Ausgabe

Das ist die am leichtesten verwendbare Einstellung. In diesem Fall enthält der Parameter KomplexTyp die Konstante Web Service Dynamic oder wird ausgelassen.

Die gesendeten Parameter und erhaltenen Antworten lassen sich direkt verwalten, ohne vorherige Bearbeitung.

Siehe Beispiel zum Befehl GET WEB SERVICE RESULT.

RPC Modus, komplexe Eingabe und einfache Ausgabe

In diesem Fall enthält der Parameter KomplexTyp die Konstante Web Service Manual In. Mit dieser Einstellung müssen Sie jedes XML Quellelement dem Web Service "manuell" als BLOB übergeben, und zwar über den Befehl SET WEB SERVICE PARAMETER.

Sie müssen selbst das Anfangs-BLOB als gültiges XML Element formatieren. Sein erstes Element muss das erste erscheinende "Child" Element aus dem Element <Body> der endgültigen Anfrage sein.

Beispiel

   C_BLOB($1)
   C_BOOLEAN($0)

   SET WEB SERVICE PARAMETER("MyXMLBlob";$1)
   CALL WEB SERVICE("http://my.domain.com/my_service";"MySoapAction";"TheMethod"
                           "http://my.namespace.com/";Web Service Manual In)
   GET WEB SERVICE RESULT($0;"MyOutputVar";*)

RPC Modus, einfache Eingabe und komplexe Ausgabe

In diesem Fall enthält der Parameter KomplexTyp die Konstante Web Service Manual Out. Der Web Service gibt jeden Ausgabeparameter als XML Element, gespeichert in einem BLOB zurück. Sie finden diesen Parameter über den Befehl GET WEB SERVICE RESULT wieder. Sie können dann den Inhalt des erhaltenen BLOB mit den XML Befehlen von 4D durchlaufen.

Beispiel

   C_BLOB($0)
   C_BOOLEAN($1)

   SET WEB SERVICE PARAMETER("MyInputVar";$1)
   CALL WEB SERVICE("http://my.domain.com/my_service";"MySoapAction";"TheMethod"
                           "http://my.namespace.com/";Web Service Manual Out)
   GET WEB SERVICE RESULT($0;"MyXMLOutput";*)

RPC Modus, komplexe Eingabe und Ausgabe

In diesem Fall enthält der Parameter KomplexTyp die Konstante Web Service Manual. Jeder Eingabe- und Ausgabeparameter muss dann als XML Element in BLOBs gespeichert werden, wie in den beiden obigen Einstellungen beschrieben.

Beispiel

   C_BLOB($0)
   C_BLOB($1)

   SET WEB SERVICE PARAMETER("MyXMLInputBlob";$1)
   CALL WEB SERVICE("http://my.domain.com/my_service";"MySoapAction";"TheMethod"
                           "http://my.namespace.com/";Web Service Manual)
   GET WEB SERVICE RESULT($0;"MyXMLOutput";*)

DOC Modus

Ein Proxy, das eine Methode für ein DOC Web Service aufruft, ist ähnlich zum Proxy, das eine Methode für ein RPC Web Service über komplexe Eingabe- und Ausgabeparameter aufruft.

Der einzige Unterschied liegt in der Ebene des XML Inhalts der gesendeten und empfangenen BLOB Parameter. Aus Sicht von 4D sind Aufbau und Senden der SOAP Anfrage das gleiche.

Beispiel

   C_BLOB($0)
   C_BLOB($1)

   SET WEB SERVICE PARAMETER("MyXMLInput";$1)
   CALL WEB SERVICE("http://my.domain.com/my_service";"MySoapAction";"TheMethod"
                              "http://my.namespace.com/";Web Service Manual)
   GET WEB SERVICE RESULT($0;"MyXMLOutput";*)

Hinweis: Für DOC Web Services spielt der Wert der als Parameter übergebenen Strings ("MyXMLInput" und "MyXMLOutput" s.o.) keine Rolle; Sie können auch leere Strings übergeben "". Tatsächlich verwendet die SOAP Anfrage mit dem XML Dokument diesen Wert nicht. Es ist jedoch zwingend, diese Parameter zu übergeben.

Um einen Web Service im DOC Modus bzw. RPC Modus mit komplexen Typen zu veröffentlichten, sollten Sie folgendermassen vorgehen:

Erzeugen Sie die Proxy Methode mit dem Assistenten für Web Services auf Client-Ebene. Sie wird aufgerufen, wie folgt:

$XMLresultBlob:=$DOCproxy_Method($XMLparamBlob)

Machen Sie sich über einen Online-Test mit dem Inhalt von SOAP Anfragen an den Web Service vertraut, z.B. http://soapclient.com/soaptest.html. Dieses Tool dient zum Generieren von HTML Test Formularen, die auf dem WSDL von Web Service basieren.

Kopieren Sie den erzeugten XML Inhalt aus dem ersten „child" Element von <body>.

Schreiben Sie eine Methode, um reelle Werte von Parametern in XML Code zu schreiben; dieser Code muss dann in das BLOB $XMLparamBlob gesetzt werden.

Zum Analysieren (Parsen) der Antwort können Sie wieder einen Online-Test einsetzen oder WSDL verwenden, welches die zurückgegebenen Elemente spezifiziert.

Der Parameter * dient zum Optimieren von Aufrufen. Ist dieser Parameter übergeben, schließt der Befehl nach seiner Ausführung nicht die von dem Prozess verwendete Verbindung. Der nächste Aufruf von CALL WEB SERVICE verwendet wieder dieselbe Verbindung, wenn der Parameter * übergeben ist, usw. Um die Verbindung zu schließen, führen Sie den Befehl ohne den Parameter * aus. Diese Vorgehensweise beschleunigt signifikant die Bearbeitung aufeinanderfolgender Aufrufe mehrerer Web Dienste auf demselben Server, insbesondere in einer WAN Konfiguration (z.B. über Internet). Beachten Sie, dass diese Vorgehensweise von der "keep-alive" Einstellung des Web Server abhängt. Diese Einstellung weist in der Regel pro Verbindung eine max. Anzahl für Anfragen zu und kann auch Anfra-gen abweisen. Ist die max. Anzahl Anfragen für CALL WEB SERVICE in derselben Verbindung erreicht oder sind keine keep-alive Verbindun-gen erlaubt, erstellt 4D für jede Anfrage eine neue Verbindung.

Referenz

GET WEB SERVICE RESULT, SET WEB SERVICE PARAMETER.

Systemvariablen oder Mengen

Wurde die Anfrage korrekt geroutet und hat sie der Web Service akzeptiert, wird die Systemvariable OK auf 1 gesetzt. Sonst erhält sie 0 (Null) und ein Fehler wird zurückgegeben.

Anwendung des Befehls

Connecting 4D Databases through SOAP, Returning Pictures Through SOAP, Terra Server


4D - Documentation   Français   English   German   English   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next