Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
WEB SERVICE CALL
|
WEB SERVICE CALL ( ZugriffURL ; SoapAktion ; Methodenname ; Namensraum {; KomplexTyp {; *}} ) | ||||||||
Parameter | Typ | Beschreibung | ||||||
ZugriffURL | String |
![]() |
Zugriff URL zu Web Service | |||||
SoapAktion | String |
![]() |
Inhalt des Feldes SOAPAktion | |||||
Methodenname | String |
![]() |
Name der Methode | |||||
Namensraum | String |
![]() |
Namensraum | |||||
KomplexTyp | Lange Ganzzahl |
![]() |
Konfiguration komplexer Typen (ohne Angabe einfache Typen) | |||||
* | Operator |
![]() |
Mit *: Verbindung nicht schließen | |||||
Der Befehl WEB SERVICE CALL ruft einen Web Service durch Senden einer HTTP Anfrage auf. Diese Anfrage enthält die SOAP Meldung, die zuvor mit dem Befehl WEB SERVICE SET PARAMETER erstellt wurde.
Jeder nachfolgende Aufruf von WEB SERVICE SET PARAMETER löst die Erstellung einer neuen Anfrage aus. Die Ausführung von WEB SERVICE CALL 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 4D Designmodus.
Der optionale Parameter KomplexTyp spezifiziert die Konfiguration der empfangenen bzw. gesendeten Parameter des Web Service, die mit den Befehlen WEB SERVICE SET PARAMETER und WEB SERVICE GET 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:
Konstante | Typ | Wert |
Web Service dynamic | Lange Ganzzahl | 0 |
Web Service manual | Lange Ganzzahl | 3 |
Web Service manual in | Lange Ganzzahl | 1 |
Web Service manual out | Lange Ganzzahl | 2 |
Zur Erinnerung: Die Merkmale der Eingangs- bzw. Ausgangsparameter werden aus Sicht der Proxy-Methode/Web Service bewertet.
Nachfolgende Tabelle zeigt die möglichen Einstellungen mit den dazugehörigen Konstanten:
Eingabeparameter | ||
Ausgabeparameter | Einfach | Komplex |
Einfach | Web Service Dynamic | Web Service Manual In |
(RPC Modus) | (RPC Modus) | |
Komplex | Web Service Manual Out | Web 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 Daten-Arrays komplexe XML Typen sind, behandelt 4D diese als einfache Typen.
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 WEB SERVICE GET RESULT.
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 WEB SERVICE SET 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)
WEB SERVICE SET PARAMETER("MyXMLBlob";$1)
WEB SERVICE CALL("http://my.domain.com/my_service";"MySoapAction";"TheMethod";"http://my.namespace.com/";Web Service manual in)
WEB SERVICE GET RESULT($0;"MyOutputVar";*)
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 WEB SERVICE GET 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)
WEB SERVICE SET PARAMETER("MyInputVar";$1)
WEB SERVICE CALL("http://my.domain.com/my_service";"MySoapAction";"TheMethod";"http://my.namespace.com/";Web Service manual out)
WEB SERVICE GET RESULT($0;"MyXMLOutput";*)
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";*)
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)
WEB SERVICE SET PARAMETER("MyXMLInput";$1)
WEB SERVICE CALL("http://my.domain.com/my_service";"MySoapAction";"TheMethod";"http://my.namespace.com/";Web Service manual)
WEB SERVICE GET 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:
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 WEB SERVICE CALL 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 Anfragen abweisen. Ist die max. Anzahl Anfragen für WEB SERVICE CALL in derselben Verbindung erreicht oder sind keine keep-alive Verbindungen erlaubt, erstellt 4D für jede Anfrage eine neue Verbindung.
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
Produkt: 4D
Thema: Web Services (Client)
Nummer:
778
Geändert: 4D v11 SQL
Umbenannt: 4D v13 (CALL WEB SERVICE)
Geändert: 4D v14
4D Programmiersprache ( 4D v20 R7)