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