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

<- HTTPProxy() - Http Inhaltsverzeichnis - HTTPRequestMemory() ->