HTTPRequest()
Syntax
Ergebnis = HTTPRequest(Typ, URL$ [, Daten$ [, Flags [, Header()]]])Beschreibung
Sendet eine HTTP-Anfrage ("HTTP request") mit optionalen Text-Daten. Falls Binär-Daten gesendet werden müssen, kann HTTPRequestMemory() verwendet werden. Dieser Befehl kann die REST Web-API problemlos verarbeiten. FinishHTTP() muss immer aufgerufen werden, nachdem die Anforderung ausgeführt wurde.
Parameter
Typ Der Typ der Anfrage. Dies kann einer der folgenden Werte sein: #PB_HTTP_Get : GET Request ('Daten$' Parameter wird ignoriert) #PB_HTTP_Post : POST Request ('Daten$' Parameter wird gesendet, sofern angegeben) #PB_HTTP_Put : PUT Request ('Daten$' Parameter wird gesendet, sofern angegeben) #PB_HTTP_Patch : PATCH Request ('Daten$' Parameter wird gesendet, sofern angegeben) #PB_HTTP_Delete : DELETE Request ('Daten$' Parameter wird gesendet, sofern angegeben)URL$ Die URL, an die die Anfrage gesendet werden soll. Daten$ (optional) Die mit der Anfrage zu sendenden Text-Daten (werden im UTF-8 Format gesendet). Flags (optional) Dies kann eine Kombination der folgenden Werte sein: #PB_HTTP_Asynchronous : startet den Download asynchron. #PB_HTTP_NoRedirect : folgt keinen automatischen Weiterleitungen. #PB_HTTP_NoSSLCheck : prüft nicht, ob das SSL-Zertifikat gültig ist (kann zu Testzwecken nützlich sein). #PB_HTTP_HeadersOnly : ermittelt nur die Header (Kopfzeilen). #PB_HTTP_WeakSSL : zum Unterstützen älterer Server. #PB_HTTP_Debug : zum Ausgeben von Debug-Informationen in der Konsole.Header() (optional) Eine Map aus Stringpaaren, um zusätzliche Header für die Anforderung anzugeben. Beispiel: NewMap Header$() Header$("Content-Type") = "text/plain" Header$("User-Agent") = "Firefox 54.0" Header$("NoParamHeader") = "" ; Ohne Angabe eines String-Wertes, wird dies ein leerer Parameter sein.
Rückgabewert
Gibt die HTTP-Request-Kennung zurück, wenn der Aufruf erfolgreich initialisiert wurde, andernfalls Null. HTTPInfo() kann verwendet werden, um Informationen zur Anfrage zu erhalten. Wenn #PB_HTTP_Asynchronous angegeben wurde, kann HTTPProgress() verwendet werden und AbortHTTP() muss verwendet werden.
HTTPMemory() kann verwendet werden, um das Ergebnis als Rohpuffer ("raw") abzurufen (der Rohpuffer muss mit FreeMemory() freigegeben werden).
FinishHTTP() muss immer aufgerufen werden, um eine erfolgreich initialisierte HTTP-Anforderung zu beenden, auch wenn der Aufruf synchron erfolgte.
Anmerkungen
Auf Linux muss 'libcurl' installiert sein, damit dieser Befehl funktioniert (die meisten Linux-Distributionen haben es bereits vorinstalliert).
Beispiel
HttpRequest = HTTPRequest(#PB_HTTP_Get, "https://www.google.com") If HttpRequest Debug "StatusCode: " + HTTPInfo(HTTPRequest, #PB_HTTP_StatusCode) Debug "Response: " + HTTPInfo(HTTPRequest, #PB_HTTP_Response) FinishHTTP(HTTPRequest) Else Debug "Request creation failed" EndIf
Beispiel: mit Header
NewMap Header$() Header$("Content-Type") = "plaintext" Header$("User-Agent") = "Firefox 54.0" HttpRequest = HTTPRequest(#PB_HTTP_Get, "https://www.google.com", "", 0, Header$()) If HttpRequest Debug "StatusCode: " + HTTPInfo(HTTPRequest, #PB_HTTP_StatusCode) Debug "Response: " + HTTPInfo(HTTPRequest, #PB_HTTP_Response) FinishHTTP(HTTPRequest) Else Debug "Request creation failed" EndIf
Beispiel: Asynchron
HttpRequest = HTTPRequest(#PB_HTTP_Get, "https://www.purebasic.com/download/PureBasic_Demo.zip", "", #PB_HTTP_Asynchronous) If HttpRequest Debug "StatusCode: " + HTTPInfo(HTTPRequest, #PB_HTTP_StatusCode) Repeat Progress = HTTPProgress(HttpRequest) Select Progress Case #PB_HTTP_Success Debug "Download finished" *Buffer = HTTPMemory(HTTPRequest) If *Buffer Debug "Memory buffer size: "+MemorySize(*buffer) ; Hier kann der Puffer auf die Festplatte oder in das verwendete Verzeichnis geschrieben werden FreeMemory(*Buffer) EndIf FinishHTTP(HTTPRequest) ; Rufen Sie immer FinishHTTP() auf, wenn die Anfrage abgeschlossen ist Break Case #PB_HTTP_Failed Debug "Download failed" FinishHTTP(HTTPRequest) ; Rufen Sie immer FinishHTTP() auf, wenn die Anfrage fehlschlägt Break Case #PB_HTTP_Aborted Debug "Download aborted" FinishHTTP(HTTPRequest) ; Rufen Sie immer FinishHTTP() auf, wenn die Anfrage abgebrochen wird Default Debug "Current download: " + Progress ; Der aktuelle Download-Fortschritt in Bytes Delay(100) EndSelect ForEver Else Debug "Request creation failed" EndIf
Siehe auch
URLEncoder(), AbortHTTP()
Unterstützte OS
Alle