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