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