DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Communication / Fonctions HTTP
  • Propriétés spécifiques à la description des variables de type httpRequête
  • Remarque
  • Cookies HTTP
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Le type httpRequête permet de définir toutes les caractéristiques avancées d'une requête HTTP/HTTPS. Les caractéristiques de cette requête HTTP/HTTPS peuvent être définies et modifiées à l'aide de différentes propriétés WLangage.
Remarque : Pour plus de détails sur la déclaration de ce type de variable et l'utilisation des propriétés WLangage, consultez Déclaration d'une variable.
Exemple
cMaRequête est un httpRequête
cMaRequête.URL = "https://www.pcsoft.fr"
cMaRéponse est un httpRéponse = HTTPEnvoie(cMaRequête)
SI ErreurDétectée ALORS 
	Erreur(ErreurInfo(errComplet))
SINON
	Info(cMaRéponse.Contenu)
FIN
Remarques

Propriétés spécifiques à la description des variables de type httpRequête

Les propriétés suivantes peuvent être utilisées pour manipuler une requête HTTP/HTTPS :
Nom de la propriétéType manipuléEffet
AgentUtilisateurChaîne de caractèresIdentifie le client. Par défaut, la valeur correspond au nom de l'application.
Le contenu de la réponse peut dépendre de l'agent utilisateur (par exemple, une requête effectuée à partir d'un Palm Pilot nécessite des pages différentes d'une requête effectuée avec un navigateur PC). Dans ce cas, consultez la documentation de l'agent utilisateur pour plus de détails.
AuthentificationConstante de type EntierPermet de définir le mode d'authentification nécessaire pour avoir accès à certaines ressources du serveur ou du site :
  • auBasic : Le nom et le mot de passe sont en clair dans la requête.
  • auDigest : Le nom et le mot de passe présents dans la requête sont modifiés via un hash.
  • auNegotiate : Le client et le serveur échangent un certain nombre d'informations avant d'établir une connexion. Le protocole Kerberos est tout d'abord utilisé et s'il n'est pas disponible, le protocole NTLM est utilisé.
  • auNTLM : Le client et le serveur échangent un certain nombre d'informations avant d'établir une connexion via le protocole NTLM (Windows uniquement).
Remarque : Bien qu'encore très utilisé, le protocole NTLM n'est plus recommandé.
AuthTokenVariable de type AuthTokenToken d'accès à un Webservice à utiliser en cas d'authentification via le protocole OAuth 2.0. Ce token d'accès a été récupéré via la fonction AuthIdentifie.
Le token d'accès est automatiquement passé au paramètre access_token directement sur l'URL. Si le paramètre doit être différent, construisez vous-même l'URL http à exécuter.
AvancementEnvoiVariable de type httpAvancementNotification de l'état d'avancement de l'envoi des données POST.
AvancementTéléchargementVariable de type httpAvancementNotification de l'état d'avancement de la réception des données.
CertificatClientChaîne de caractères ou bufferCorrespond :
  • à une chaîne de caractères contenant un chemin d'accès au fichier .p12 contenant le certificat à joindre à la requête. Le chargement du certificat se fera automatiquement en prenant :
    • le certificat présent dans la bibliothèque de l'exécutable (s'il a été intégré à l'application),
    • le certificat présent à l'emplacement spécifié sur disque (si le certificat n'a pas été intégré dans la bibliothèque de l'exécutable).
  • à un buffer contenant le certificat (utilisation de la fonction fChargeBuffer).
Si cette propriété correspond à une chaîne vide (""), le certificat par défaut est réinitialisée à "<Aucun>".
CipherChoisiChaîne de caractèresNom du cipher choisi pour la requête sécurisée.
Cette propriété est disponible uniquement en lecture.
ContentTypeChaîne de caractèresType du contenu du message HTTP à envoyer au serveur. Cette propriété est prise en compte uniquement si la méthode d'envoi (propriété Méthode) le permet.
Par défaut, le type du message correspond à : "application/x-www-form-urlencoded".
Il est cependant possible de mettre n'importe quelle valeur, par exemple : "text/xml", "application/javascript", "application/json", "application/xml", "image/jpeg", ...
Pour envoyer des données brutes, qui seront lues en une seule fois par le serveur d'application WEBDEV, utilisez les types :
  • "application/octet-stream".
  • "text/xml".
ContenuBufferMessage HTTP à envoyer au serveur. Cette propriété est prise en compte uniquement si la méthode d'envoi (propriété Méthode) le permet.
Le message à envoyer doit respecter le protocole HTTP utilisé. Par défaut, si cette propriété est précisée et non vide, la méthode utilisée est une requête POST sinon c'est une requête GET.
BooléenIndique si la propriété Contenu doit correspondre au contenu brute :
  • Vrai : la propriété Contenu correspond à un buffer. Aucune modification n'est effectuée.
  • Faux (Valeur par défaut) : le contenu est modifié par le navigateur. En particulier, le texte UTF-8 est automatiquement décodé. la propriété Contenu retourne le résultat sous forme d'une chaîne.
DébitEnvoiMaxEntierVitesse maximale à utiliser pour l'envoi des données, exprimée en kilo-octets par seconde. Cette vitesse est donnée à titre indicatif.
0 (valeur par défaut) signifie que cette vitesse n'est pas limitée.
DébitTéléchargementMaxEntierVitesse maximale à utiliser pour la réception des données, exprimée en kilo-octets par seconde. Cette vitesse est donnée à titre indicatif.
0 (valeur par défaut) signifie que cette vitesse n'est pas limitée.
DestinationChaîne de caractèresChemin complet du fichier de sauvegarde du résultat de la requête HTTP.
DuréeNonRéponseEntier ou DuréeTemps maximum d'attente de la réponse (exprimé en millisecondes). Cette propriété peut correspondre à :
  • un entier correspondant au nombre de millisecondes,
  • une variable de type Durée,
  • l'indication directe de la durée (par exemple '1s' ou '10ms').
Par défaut, cette propriété vaut 20 secondes.
Remarque : Le timeout défini avec la fonction HTTPTimeOut n'a pas d'influence sur cette propriété.
EntêteTableau associatif de chaînes de caractèresEnsemble clé/valeur des entêtes à envoyer.
Exemple d'utilisation de cette propriété :
cMaRequête.Entête["Authorization"] = ...
	" WSSE profile=""UsernameToken"""
cMaRequête.Entête["X-WSSE"] = ...
	"UsernameToken Username=blahblah "
cMaRequête.Entête["Cache-Control"] = " no-cache"
Changement de comportement à partir de la version 29 Update 3 :
  • Avant la version 29 Update 3, les entêtes vides ne sont pas transmis.
  • A partir de la version 29 Update 3, les entêtes vides sont transmis. Exemple :
    req est un httpRequête
    req..Entête["Vide"] = ""
    req.Envoie()
    Désormais l'entête "Vide" est transmis au serveur lors de l'envoi de la requête et sa valeur est une chaîne vide.
IgnoreErreurConstante de type EntierSpécifie les erreurs ignorées. Correspond à une constante ou une combinaison de constantes :
  • httpIgnoreCertificatInvalide : Le certificat est ignoré.
  • httpIgnoreNomCertificatInvalide : Le nom du site figurant dans le certificat est ignoré.
  • httpIgnoreCertificatExpiré : La date du certificat est ignorée.
  • httpIgnoreDéprécié : Ignore les erreurs en lien avec l'utilisation d'algorithmes dépréciés (exemple : signature de certificat en SHA-1).
  • httpIgnoreRedirection : La redirection vers une page est ignorée.
  • httpIgnoreRenvoiHTTP : Le renvoi vers un serveur non sécurisé est autorisé.
  • httpIgnoreRenvoiHTTPS : Le renvoi vers un serveur sécurisé est autorisé.
  • httpIgnoreRenégociationNonSecurisée : Ignore l'erreur stipulant que le serveur ne supporte pas la renégociation sécurisée (RFC 5746).
  • httpIgnoreRévocation : Le contrôle dans la liste des certificats révoqués est ignoré.
AndroidWidget Android Seules les erreurs suivantes sont gérées : httpIgnoreCertificatExpiré, httpIgnoreCertificatInvalide, httpIgnoreNomCertificatInvalide, httpIgnoreRévocation, httpIgnoreRedirection.
MéthodeConstante de type EntierMéthode HTTP utilisée :
  • httpCopy : Méthode COPY (valeur 7).
  • httpDelete : Méthode DELETE (valeur 4).
  • httpGet : Méthode GET (valeur 1).
  • httpHead : Méthode HEAD (valeur 5).
  • httpLock : Méthode LOCK (valeur 12) (protocole WebDAV).
  • httpMkCol : Méthode MKCOL (valeur 10) (protocole WebDAV).
  • httpMove : Méthode MOVE (valeur 11) (protocole WebDAV).
  • httpPatch : Méthode PATCH (valeur 6).
  • httpPost : Méthode POST (valeur 2).
  • httpPropFind : Méthode PROPFIND (valeur 8) (protocole WebDAV).
  • httpPropPatch : Méthode PROPPATCH (valeur 9) (protocole WebDAV).
  • httpPut : Méthode PUT (valeur 3).
  • httpUnlock : Méthode UNLOCK (valeur 13) (protocole WebDAV).
Par défaut, si la propriété Contenu est non vide, la méthode httpPost est utilisée. Dans le cas contraire, la méthode httpGet est utilisée.
MotDePasseChaîne de caractèresMot de passe associé au nom d'utilisateur (chaîne vide par défaut). Permet d'accéder à une page avec une URL protégée. Attention : Le mot de passe est transmis en clair sur Internet.
Remarque : En renseignant les propriétés NomUtilisateur et MotDePasse, le "Authorization:Basic" correspondant est automatiquement généré dans l'entête de la requête.
MotDePasseCertificatClientChaîne de caractèresMot de passe associé au certificat client (chaîne vide par défaut).
ProcédureTraceProcédureNom de la procédure WLangage permettant de connaître les entêtes et les données envoyées et reçues. Cette procédure est de la forme :
PROCÉDURE <Nom procédure>(<TypeInfo> est entier,
<Data> est un Buffer)
où :
  • <TypeInfo> est une constante de type Entier correspondant au type de données tracées :
    • httpTraceDonnéeEnvoyée : Données envoyées.
    • httpTraceDonnéeRecue : Données reçues.
    • httpTraceEntêteEnvoyé : Entête envoyé.
    • httpTraceEntêteRecu : Entête reçu.
    • httpTraceInfo : Informations détaillées sur l’exécution de la requête (erreur bas niveau de cURL/OpenSSL, étape en cours, avertissements, etc.).
  • <Data> est un buffer contenant les informations.
Exemple de procédure :
PROCÉDURE ProcTrace(nTypeInfo est entier, ...
		bufByData est un Buffer)
	SELON nTypeInfo
		CAS httpTraceEntêteEnvoyé:
			Trace("Entete : ", ...
				UTF8VersChaîne(bufByData))
		CAS httpTraceDonnéeEnvoyée:
			Trace("Donnees : ", ...
					bufByData)
		CAS httpTraceEntêteRecu:
			Trace("Entête reçu : ", ...
				UTF8VersChaîne(bufByData))
		CAS httpTraceDonnéeRecue:
			Trace("Données reçues : ", ...
					bufByData)
	FIN
TimeoutConnexionEntier ou DuréeTemps maximal d'attente pour la connexion exprimé en millisecondes (par défaut 20 secondes, soit 20000 millisecondes). Cette propriété peut correspondre à :
  • un entier correspondant au nombre de millisecondes,
  • une variable de type Durée,
  • l'indication directe de la durée (par exemple 20 s ou 20000 ms).
Si à la fin de ce délai, la connexion n'a pas pu s'effectuer, il y a échec de la connexion (la fonction HTTPEnvoie par exemple renverra une erreur, contenue dans la variable résultat de type httpRéponse).
URLChaîne de caractèresAdresse du serveur à contacter sous forme d'adresse URL.
Cette URL peut contenir :
  • le numéro de port pour la connexion sur le serveur.
    La valeur par défaut est 80 en HTTP (correspond à un serveur de pages Web) et 443 en HTTPS. Pour spécifier un numéro de port, utilisez le format : "<URL du serveur>:<N° du port>". Par exemple : "http://www.pcsoft.fr:80".
  • des paramètres supplémentaires. Ces paramètres peuvent permettre d'effectuer une recherche ou de remplir un formulaire. Par exemple, pour rechercher "pcsoft" sur "http://www.google.fr", l'URL à contacter sera : "http://www.google.fr/search?q=pcsoft".
Remarques :
  • Pour spécifier à la fois le numéro de port et des paramètres supplémentaires, utilisez le format : "<URL du serveur>:<N° du port>/<Paramètres supplémentaires>".
  • Pour réaliser une transaction sécurisée, l'URL doit commencer par la chaîne "https://". Dans ce cas, le mode de gestion des requêtes est toujours effectué par Internet Explorer (pour plus de détails, consultez la fonction HTTPParamètre).
UtilisateurChaîne de caractèresNom permettant d'accéder à une page avec une URL protégée (chaîne vide par défaut). Ce nom permet d'identifier l'utilisateur.
Remarque : En renseignant les propriétés Utilisateur et MotDePasse, le "Authorization:Basic" correspondant est automatiquement généré dans l'entête de la requête.
VersionHTTPConstante de type EntierVersion du protocole HTTP utilisée par le serveur :
  • httpVersion2 : Protocole HTTP version 2.0. Si le serveur ne gère pas cette version, une version plus ancienne est utilisée.
  • httpVersion2Uniquement : Protocole HTTP version 2.0 forcée : si le serveur ne gère pas cette version, une erreur fatale est affichée.
  • httpVersion1_1 : Protocole HTTP version 1.1.
  • httpVersion1_0 : Protocole HTTP Version 1.0.
  • httpVersionDéfaut : Protocole HTTP Version 1.0.
VersionSSLConstante de type EntierVersion SSL minimum et maximum à utiliser.
Pour limiter par exemple à TLS entre 1.1 et 1.3, il suffit d'indiquer la combinaison de constantes ProtocoleTLS1_1 + ProtocoleTLS1_3
Les constantes utilisables sont les suivantes :
  • ProtocoleDéfaut : Protocole par défaut. C'est la version la plus élevée qui est proposée (ou une version inférieure si le serveur ne supporte pas ce protocole).
  • ProtocoleTLS1 : Protocole TLS1.
  • ProtocoleTLS1_1 : Protocole TLS1.1.
  • ProtocoleTLS1_2 : Protocole TLS1.2.
  • ProtocoleTLS1_3 : Protocole TLS1.3.
VersionSSLChoisieConstante de type EntierVersion SSL choisie pour une requête sécurisée :
  • ProtocoleDéfaut : Protocole par défaut (TLS 1.2).
  • ProtocoleTLS1 : Protocole TLS1.
  • ProtocoleTLS1_1 : Protocole TLS1.1.
  • ProtocoleTLS1_2 : Protocole TLS1.2.
  • ProtocoleTLS1_3 : Protocole TLS1.3.
Cette propriété est disponible uniquement en lecture.

Remarque

Par défaut, les redirections sont gérées. Pour ne pas gérer les redirections, utilisez la constante httpIgnoreRedirection dans la propriété IgnoreErreur.
AndroidWidget AndroidiPhone/iPad

Cookies HTTP

Les cookies reçus en réponse à un appel de la fonction HTTPEnvoie sont conservés dans l'attente d'un appel ultérieur à la fonction HTTPEnvoie sur le même domaine : la variable de type httpRequête est mise à jour.
Pour plus de détails, consultez la fonction HTTPCookieGère.
Version minimum requise
  • Version 20
Documentation également disponible pour…
Commentaires
..Methode = httpPost malgré formulaire
Attention, depuis WD26, la modification de la méthode ne se fait plus automatiquement quand un formulaire est ajouté à la requête.
Par défaut, la requête reste en GET et il faut préciser "requete..Methode = httpPost"
teyermann
01 sep. 2021
..httpIgnoreCertificatInvalide n'est pas fonctionnel en Linux
La documentation ne le dit pas mais ..httpIgnoreCertificatInvalide n'est pas possible en Linux. Il faut utiliser httpIgnoreCertificatExpiré+httpIgnoreCertificatInvalide+httpIgnoreNomCertificatInvalide
Philippe Jean
30 juil. 2019

Dernière modification : 22/08/2024

Signaler une erreur ou faire une suggestion | Aide en ligne locale