HTTPRequest()

Syntaxe

Resultat = HTTPRequest(Type, URL$ [, Data$ [, Options [, EnTetes()]]])
Description
Envoie une requête HTTP avec des données textuelles optionnelles.

Arguments

Type Le type de la requête. Peut être l'une des valeurs suivantes:
  #PB_HTTP_Get    : Requête GET    (le paramètre 'Data$' sera ignoré)
  #PB_HTTP_Post   : Requête POST   (le paramètre 'Data$' sera envoyé si spécifié)
  #PB_HTTP_Put    : Requête PUT    (le paramètre 'Data$' sera envoyé si spécifié)
  #PB_HTTP_Patch  : Requête PATCH  (le paramètre 'Data$' sera envoyé si spécifié)
  #PB_HTTP_Delete : Requête DELETE (le paramètre 'Data$' sera envoyé si spécifié)
URL$ L'URL à interroger.
Data$ (optionnel) Les données textuelles à envoyer (envoyées au format UTF-8).
Options (optionnel) Ce peut être une combinaison des valeurs suivantes:
  #PB_HTTP_Asynchronous: Téléchargement de manière asynchrone.
  #PB_HTTP_NoRedirect  : Ne pas suivre les redirections automatiques.
  #PB_HTTP_NoSSLCheck  : Ne pas vérifier si le certificat SSL est valide (peut être utile à des fins de test).
  #PB_HTTP_HeadersOnly : Affiche les en-têtes seuls.
  #PB_HTTP_WeakSSL     : Support des serveurs anciens.
  #PB_HTTP_Debug       : Imprimer des informations dans la console de debogage.
EnTetes() (optionnel) Une map d'en-têtes supplémentaires, sous forme de chaînes de caractères.
Exemple:
  NewMap Header$()
  Header$("Content-Type") = "text/plain"
  Header$("User-Agent") = "Firefox 54.0"
  Header$("NoParamHeader") = ""  

Valeur de retour

Renvoie l'identifiant de la requête HTTP si l'appel a été initialisé avec succès, zéro sinon .

Remarques

Sous Linux, vous devez installer 'libcurl' pour que cette commande fonctionne (la plupart des distributions Linux l'ont déjà).

Si des données binaires doivent être envoyées, vous pouvez utiliser HTTPRequestMemory()().

Cette commande est conçue pour gérer facilement REST comme une API Web.

HTTPInfo() peut être utilisé pour obtenir des informations sur la requête.
Si #PB_HTTP_Asynchronous a été spécifié, HTTPProgress() peut être utilisé et AbortHTTP() doit être utilisé.
HTTPMemory() peut être utilisé pour obtenir le résultat sous forme de tampon brut (le tampon brut doit être libéré avec FreeMemory()).

FinishHTTP() doit toujours être appelé pour terminer une demande HTTP initialisée avec succès, même si l'appel était synchrone.

Exemple

  HttpRequest = HTTPRequest(#PB_HTTP_Get, "https://www.google.com")
  If HttpRequest
    Debug "Status: " + HTTPInfo(HTTPRequest, #PB_HTTP_StatusCode)
    Debug "Réponse: " + HTTPInfo(HTTPRequest, #PB_HTTP_Response)
    
    FinishHTTP(HTTPRequest)
  Else
    Debug "La requête a échoué"
  EndIf

Exemple: Avec en-têtes

  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 "Status: " + HTTPInfo(HTTPRequest, #PB_HTTP_StatusCode)
    Debug "Réponse: " + HTTPInfo(HTTPRequest, #PB_HTTP_Response)
    
    FinishHTTP(HTTPRequest)
  Else
    Debug "La requête a échoué"
  EndIf

Exemple: Requête asynchrone

  HttpRequest = HTTPRequest(#PB_HTTP_Get, "https://www.purebasic.com/download/PureBasic_Demo.zip", "", #PB_HTTP_Asynchronous)
  If HttpRequest
    Debug "Status: " + HTTPInfo(HTTPRequest, #PB_HTTP_StatusCode)
    
    Repeat
      Progress = HTTPProgress(HttpRequest)
      Select Progress
        Case #PB_HTTP_Success
          Debug "Téléchargement terminé"
          *Buffer = HTTPMemory(HTTPRequest)
          If *Buffer
            Debug "Taille de la mémoire tampon: " + MemorySize(*buffer) ; Ici, le tampon peut être écrit sur le disque ou dans le répertoire
            FreeMemory(*Buffer)
          EndIf
          FinishHTTP(HTTPRequest) ; Appelez toujours FinishHTTP() lorsque la requête est terminée
          Break
          
        Case #PB_HTTP_Failed
          Debug "Échec du téléchargement"
          FinishHTTP(HTTPRequest) ; Appelez toujours FinishHTTP() lorsque la requête est terminée
          Break
          
        Case #PB_HTTP_Aborted
          Debug "Téléchargement interrompu"
          FinishHTTP(HTTPRequest) ; Appelez toujours FinishHTTP() lorsque la requête est terminée
          
        Default
          Debug "Téléchargement en cours: " + Progression ; La progression actuelle du téléchargement, en octets
          Delay(100)
      EndSelect
    ForEver
  Else
    Debug "La création de la requête a échoué"
  EndIf

Voir aussi

URLEncoder(), AbortHTTP()

OS Supportés

Tous

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