4D v16.3

WEB SERVICE CALL

Home

 
4D v16.3
WEB SERVICE CALL

WEB SERVICE CALL 


 

WEB SERVICE CALL ( ZugriffURL ; SoapAktion ; Methodenname ; Namensraum {; KomplexTyp {; *}} ) 
Parameter Typ   Beschreibung
ZugriffURL  String in Zugriff URL zu Web Service
SoapAktion  String in Inhalt des Feldes SOAPAktion
Methodenname  String in Name der Methode
Namensraum  String in Namensraum
KomplexTyp  Lange Ganzzahl in Konfiguration komplexer Typen (ohne Angabe einfache Typen)
Operator in 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.

  • Zugriff im gesicherten Modus (SSL): Wollen Sie einen Web Service im gesicherten Modus mit SSL verwenden, setzen Sie vor die URL https:// anstelle von http://. Dann läuft die Verbindung im gesicherten Modus.
    Beachten Sie, dass dieser Befehl ein Server Zertifikat verwenden kann (siehe Befehl HTTP SET CERTIFICATES FOLDER). Ist es ungültig (abgelaufen oder abgewiesen), wird die Systemvariable OK auf 0 gesetzt und Fehler 901 "Server Zertifikat ungültig" zurückgegeben. Dieser Fehler lässt sich mit einer Methode abfangen, die über den Befehl ON ERR CALL installiert wurde.

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

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
EinfachWeb Service DynamicWeb Service Manual In
(RPC Modus)(RPC Modus)
KomplexWeb 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 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:

  • 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 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



Siehe auch 

WEB SERVICE GET RESULT
WEB SERVICE SET PARAMETER

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Web Services (Client)
Nummer: 778

Dieser Befehl ändert die Systemvariable OK

 
GESCHICHTE 

Geändert: 4D v11 SQL
Umbenannt: 4D v13
Geändert: 4D v14

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)