RestConnectAsync
value RestConnectAsync ( BYREF value rest, string strHostname, value Port = 80, value bUseTLS = FALSE, value bAutoReconnect = FALSE, value IdleTimeoutInMsec = 30000);
Rückgabewert
Rückgabewert |
Beschreibung |
TASK-Objekt |
Ein neues TASK-Objekt, das mit dem REST-Objekt rest verbunden ist. |
FALSE / false / 0 |
Das Erstellen des TASK-Objekts ist fehlgeschlagen. Das REST-Objekt rest kann genutzt werden, um mit RestGetConnectFailReason die Ursache festzustellen. |
Parameter
rest
Die Zielvariable für das erzeugte REST-Objekt.
strHostname
Die Hostname des REST-Servers.
Port
Der Port des REST-Servers, der für die Verbindung genutzt werden soll.
bUseTLS
Gibt an, ob für die Verbindung das SSL/TLS Protokoll verwendet werden soll.
bAutoReconnect
Gibt an, ob für eine Verbindung automatisch wiederhergestellt werden soll, falls diese getrennt wurde und Rest-Funktionen für dieses REST-Objekt aufgerufen werden, die eine aktive Verbindung zum REST-Server benötigen.
IdleTimeoutInMsec
Die maximale Wartezeit für zusätzliche eingehende Daten während dem Empfang bzw. die maximale Wartezeit für das Senden zusätzlicher Daten.
Bemerkungen
Baut asynchron eine Verbindung zu einem REST-Server auf. Der Hostname strHostname kann ein Domainname oder eine IP-Adresse sein. Es werden sowohl IPv4- als auch IPv6-Adressen unterstützt. Der Port ist normalerweise 80 oder 443. Wenn SSL/TLS erforderlich ist, muss bUseTLS auf TRUE gesetzt werden. Die Option bAutoReconnect gibt an, ob die Verbindung für nachfolgende REST-Anforderungen automatisch wiederhergestellt werden soll. Die Timeout-Zeit IdleTimeoutInMsec gibt die max. Wartezeit an, die während und nach dem Verbindungsaufbau gültig ist - sie kann nach erfolgreichem Verbindungsauf jederzeit mit RestSetIdleTimeout neu gesetzt werden. Soll die Verbindung zum REST-Server getrennt werden, muss das REST-Objekt rest mit RestDisconnect getrennt und geschlossen werden.
Der Verbindungsauf erfolgt asynchron in einem eigenen Task (Hintergrundprozess), sodass die Funktion nicht wartet bis eine Verbindung hergestellt wurde - die Funktion RestConnectAsync kehrt nach dem Aufruf sofort zurück. Die eigentliche Abfrage, ob die Verbindung zum REST-Server tatsächlich hergestellt werden konnte, kann nur über die Task-Funktionen erfolgen.
Diese Funktion ist für einfache Verbindungen
vorgesehen, für die keine Proxys (HTTP oder SOCKS) bzw. SSH-Tunnel erforderlich
sind.
Beim Beenden eines laufenden Projekts trennt und zerstört Victory automatisch
alle nicht mit RestDisconnect
getrennten REST-Objekte.
Beispiel
////////////////////////////////////////////////////////////////////// //Globale Variablen value rest = 0; value task = 0; value RestWorker = 0; value REST_CONNECT_START = 0; value REST_CONNECT_RUNNING = 10; value REST_REQUEST_START = 20; value REST_REQUEST_RUNNING = 30; value REST_REQUEST_DONE = 40; value REST_ERROR = -100; value REST_STANDBY = -1; string strLastError; string strResponse; ////////////////////////////////////////////////////////////////////// //_MainCycle // ////////////////////////////////////////////////////////////////////// switch (RestWorker) case REST_CONNECT_START: //ip.jsontest.com liefert als Antwort die IP-Adresse des anfragenden Clients task = RestConnectAsync(rest, "http://ip.jsontest.com"); if (task == NULL) RestWorker = REST_ERROR; break; end RestWorker = REST_CONNECT_RUNNING; break; case REST_CONNECT_RUNNING: if (TaskFinished(task)) if(!TaskSuccessful(task)) RestWorker = REST_ERROR; break; else RestWorker = REST_REQUEST_START; end TaskClose(task); end break; case REST_REQUEST_START: task = RestFullRequestAsync(rest, "GET", "/"); if (task == NULL) RestWorker = REST_ERROR; break; end RestWorker = REST_REQUEST_RUNNING; break; case REST_REQUEST_RUNNING: if (TaskFinished(task)) if(!TaskSuccessful(task)) RestWorker = REST_ERROR; break; else TaskGetResultString(task, strResponse); strResponse = JsonExpand(strResponse); //Inhalt von strResponse: //{ // "ip": "82.165.12.98" //} RestWorker = REST_REQUEST_DONE; end end break; case REST_REQUEST_DONE: RestDisconnect(rest); RestWorker = REST_STANDBY; break; case REST_ERROR: if (rest != NULL) if (task != NULL) strLastError = TaskGetLastError(task); else strLastError = RestGetLastError(rest); end RestDisconnect(rest); end RestWorker = REST_STANDBY; break; end
Die REST-Funktionen, Die TASK-Funktionen
Siehe auch RestConnect, RestDisconnect, RestFullRequestAsync, RestGetLastError, TaskClose, TaskFinished, TaskSuccessful, TaskGetLastError, TaskGetResultString