HttpClose
Dieser Befehl schließt das Objekt (obj) und leert die Header- und Parameter-Liste. Alle Objekte, die in den Listen enthalten sind, werden gelöscht.
Bei den Typen _HttpRecvRequest und _HttpRecvResponse werden eventuell noch ausstehende Daten des HTTP-Body eingelesen und verworfen. Dazu muss der Header über einen Content-Length-Eintrag verfügen.
Bei den Typen _HttpSendRequest und _HttpSendResponse wird die Anfrage bzw. die Antwort über den bei HttpOpen() angegebenen Socket versendet. Als HTTP-Body kann der Inhalt einer externen Datei, der Inhalt eines Memory-Objekts oder die Parameter-Liste gesendet werden. Der Deskriptor der externen Datei oder des Memory-Objekts wird in (handle2) übergeben. In (int1) können eine oder mehrere der folgenden Optionen angegeben werden:
-
Die Daten werden nicht versendet.
-
Im HTTP-Header wird der Eintrag
Connection: closevorgenommen, der bei HTTP/1.1 dem Empfänger signalisiert, dass die Verbindung nach dem Erhalt der HTTP-Response geschlossen werden soll. -
Der Inhalt der Parameter-Liste wird in die URI eingefügt. Diese Option ist nur beim Typ
_HttpSendRequestmöglich. -
Der Inhalt der Parameter-Liste wird als HTTP-Body aufbereitet. In (handle2) darf kein Deskriptor angegeben werden.
-
Auf dem Socket vorhandene und noch nicht gelesene Chunked-Daten werden überlesen. Die Option wird nur bei
_HttpRecvRequestund_HttpRecvResponseausgewertet. -
_HttpUseWebProxy/_HttpUseWebProxyTLSFalls das Senden über einen HTTP-Proxy (
_HttpUseWebProxy) bzw. HTTPS-Proxy (_HttpUseWebProxyTLS) erfolgt, muss eine dieser Option verwendet werden. Dadurch wird ein modifizierter HTTP-Header verwendet. Die EigenschaftProxyAuthorizationist ebenfalls nur bei diesen Optionen wirksam.
Der Rückgabewert ist der _ErrOk, wenn der Versand erfolgreich war. Zu den möglichen Fehlerwerten gehören Socket-Fehler und _ErrFsiReadFault, wenn die Datei in (handle2) nicht vollständig gelesen werden kann.
Bei _HttpSendRequest werden die folgenden Header-Einträge automatisch gesetzt, wenn sie nicht bereits per Prozedur definiert wurden:
Host:(fallsHostNamedefiniert ist)Date:User-Agent:
Bei _HttpSendResponse werden die folgenden Header-Einträge automatisch gesetzt, wenn sie nicht bereits per Prozedur definiert wurden:
Date:Server:
Der Header-Eintrag Content-Length: wird automatisch gesetzt, wenn ein HTTP-Body vorhanden ist. Der angegebene Deskriptor muss, sofern er nicht weiter benötigt wird, entfernt werden (siehe MemFree() bzw. FsiClose()).
Mögliche Laufzeitfehler:
_ErrHdlInvalid: Der in (obj) oder in (handle2) übergebene Deskriptor ist ungültig._ErrStringOverflow: Bei der Option_HttpParamsToURIwird die URI länger als8192Bytes oder die vom Server gelieferte Challenge ist länger als4096Byte (bei Verwendung von_HttpProxyAuthTypeNTLM.