PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • Erreur de sécurité dans une transaction sécurisée
  • Récupération
  • Accéder à une URL protégée par mot de passe
  • Utilisation d'un proxy
  • En-têtes d'authentification
  • Cache sous Windows Mobile
  • Permissions requises
  • Limites
  • Fonctionnalité d'application requise
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Lance une requête HTTP sur un serveur. Le résultat de la requête peut être :
Remarques :
  • Deux types de requêtes sont gérés : POST et GET. Les requêtes de type GET sont automatiques. Si le "Message à envoyer" n'est pas précisé, il s'agit d'une requête GET (voir syntaxe). Pour gérer des formulaires, il est conseillé d'utiliser les fonctions de gestion des formulaires (HTTPCréeFormulaire, HTTPEnvoieFormulaire, ...).
  • Versions 20 et supérieures
    WINDEVWEBDEV - Code ServeuriPhone/iPad Il est conseillé d'utiliser la fonction HTTPEnvoie pour exécuter une requête HTTP. Cette fonction utilise une variable de type httpRequête permettant de décrire précisément la requête HTTP.
    Nouveauté 20
    WINDEVWEBDEV - Code ServeuriPhone/iPad Il est conseillé d'utiliser la fonction HTTPEnvoie pour exécuter une requête HTTP. Cette fonction utilise une variable de type httpRequête permettant de décrire précisément la requête HTTP.
    WINDEVWEBDEV - Code ServeuriPhone/iPad Il est conseillé d'utiliser la fonction HTTPEnvoie pour exécuter une requête HTTP. Cette fonction utilise une variable de type httpRequête permettant de décrire précisément la requête HTTP.
  • PHP La fonction HTTPRequête peut être utilisée uniquement si l'utilisation des sockets est autorisée sur le serveur PHP. Dans le cas d'une URL en HTTPS, OpenSSL doit être compilé avec le moteur PHP utilisé pour générer les pages : http://www.php.net/
Versions 15 et supérieures
Android Cette fonction est désormais disponible pour les applications Android.
Nouveauté 15
Android Cette fonction est désormais disponible pour les applications Android.
Android Cette fonction est désormais disponible pour les applications Android.
Versions 16 et supérieures
Universal Windows 10 App Cette fonction est désormais disponible pour les applications Windows Phone. La fonction HTTPRequête doit être exécutée dans un thread.
Nouveauté 16
Universal Windows 10 App Cette fonction est désormais disponible pour les applications Windows Phone. La fonction HTTPRequête doit être exécutée dans un thread.
Universal Windows 10 App Cette fonction est désormais disponible pour les applications Windows Phone. La fonction HTTPRequête doit être exécutée dans un thread.
Versions 17 et supérieures
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Nouveauté 17
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Versions 18 et supérieures
Universal Windows 10 App Cette fonction est désormais disponible en mode Windows Store apps.
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Nouveauté 18
Universal Windows 10 App Cette fonction est désormais disponible en mode Windows Store apps.
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Universal Windows 10 App Cette fonction est désormais disponible en mode Windows Store apps.
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Versions 21 et supérieures
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Nouveauté 21
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
// Récupération du code HTML de la page Web "www.pcsoft.com"
ResLancement = HTTPRequête("http://www.pcsoft.fr")
// Récupération d'une page HTML utilisant une URL protégée
ResLancement = HTTPRequête("http://www.pcsoft.fr", ...
"", "", "", "", "Julie", "MotDePasse")
Syntaxe
<Résultat> = HTTPRequête(<URL à contacter> [, <Agent utilisateur> [, <Entête HTTP supplémentaire> [, <Message à envoyer> [, <Type du message> [, <Nom User> [, <Mot de passe>]]]]]])
<Résultat> : Booléen
  • Vrai si la requête a été lancée,
  • Faux en cas d'erreur. Pour connaître le libellé de l'erreur, utilisez la fonction ErreurInfo avec la constante errMessage.
    Le résultat de la requête peut être enregistré dans un fichier de sauvegarde grâce à la fonction HTTPDestination ou récupéré grâce à la fonction HTTPDonneRésultat.
    Universal Windows 10 AppJava Les erreurs concernant la sécurité des transactions ne sont pas retournées par la fonction ErreurInfo : la connexion est simplement refusée.
<URL à contacter> : Chaîne de caractères (entre guillemets)
Adresse du serveur à contacter sous forme d'adresse URL. Ce paramètre peut contenir :
  • le numéro de port pour la connexion sur le serveur. La valeur par défaut est 80 (correspond à un serveur de pages Web). 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).
    Linux Les transactions sécurisées ne sont pas gérées.
<Agent utilisateur> : Chaîne de caractères (entre guillemets) optionnelle
Identifie le client. Par défaut, la valeur "PC SOFT Framework" est envoyée.Par défaut, le nom de l'application est envoyé.
Le contenu de la réponse peut dépendre de l'agent utilisateur (par exemple, une requête effectuée à partir d'un mobile 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.
Windows Mobile Identifie le client. Par défaut, la valeur "Mozilla/4.0 (compatible - MSIE 4.01 - Windows CE)" est envoyée.
En effet, le contenu de la réponse peut dépendre de l'agent utilisateur. Par exemple, si la valeur par défaut est utilisée, la taille des pages affichées sera adaptée à l'écran du Pocket PC (uniquement si le serveur du site visualisé gère cette fonctionnalité).
<Entête HTTP supplémentaire> : Chaîne de caractères (entre guillemets) optionnelle
  • Entête HTTP supplémentaire à ajouter au message HTTP,
  • Chaîne vide ("") si aucun entête HTTP ne doit être ajouté.
<Message à envoyer> : Chaîne de caractères (entre guillemets) optionnelle
Message HTTP à envoyer au serveur. Ce paramètre peut être spécifié uniquement dans le cas d'une requête d'envoi de message (requête POST). Le message à envoyer doit respecter le protocole HTTP utilisé. Si ce paramètre est précisé et non vide, il s'agit d'une requête POST sinon c'est une requête GET (tout le reste est automatique).
<Type du message> : Chaîne de caractères (entre guillemets) optionnelle
Type du contenu du message HTTP à envoyer au serveur. Ce paramètre peut être spécifié uniquement dans le cas d'une requête d'envoi de message (requête POST). Ce paramètre correspond au "Content-Type".
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", ...
Versions 16 et supérieures
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".
Nouveauté 16
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".
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".
<Nom User> : Chaîne de caractères (entre guillemets) optionnelle
Nom 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 paramètres <Nom User> et <Mot de passe>, le "Authorization:Basic" correspondant est automatiquement généré dans l'entête de la requête.
Windows Mobile Ce paramètre est pris en compte uniquement si le serveur web demande une authentification (authentification de base par exemple dans IIS).
<Mot de passe> : Chaîne de caractères (entre guillemets) optionnelle
Mot 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 paramètres <Nom User> et <Mot de passe>, le "Authorization:Basic" correspondant est automatiquement généré dans l'entête de la requête.
Windows Mobile Ce paramètre est pris en compte uniquement si le serveur Web demande une authentification (authentification de base par exemple dans IIS).
Remarques

Erreur de sécurité dans une transaction sécurisée

Lors d'une transaction sécurisée, certaines erreurs de sécurité peuvent faire échouer la requête :
  • certificat invalide ou ne provenant pas d'une société connue.
  • nom du site figurant dans le certificat ne correspond pas à un serveur.
  • date du certificat non-valide ou expiré.
  • renvoi vers un serveur non sécurisé.
  • ...
Ces erreurs sont renvoyées par la fonction ErreurInfo.
Si une de ces erreurs est rencontrée, il est possible d'exécuter à nouveau la requête en ignorant ces erreurs. Pour cela, il suffit d'utiliser la variable HTTP.IgnoreErreur.
La variable HTTP.IgnoreErreur permet également de gérer certains cas particuliers lors des transactions sécurisées (par exemple, ne pas prendre en compte la liste des certificats révoqués).
Erreur renvoyée par la fonction ErreurInfo
(avec la constante errCode)
Valeur de HTTP.IgnoreErreur
(ces valeurs peuvent être combinées)
Description
httpErreurCertificatInvalide
Certificat invalide ou ne provenant pas d'une société connue
httpIgnoreCertificatInvalideLe certificat est ignoré.
httpErreurNomCertificatInvalide
Nom du site figurant dans le certificat ne correspond pas à un serveur
httpIgnoreNomCertificatInvalideLe nom du site figurant dans le certificat est ignoré.
httpErreurCertificatExpiré
Date du certificat non-valide ou expiré
httpIgnoreCertificatExpiréLa date du certificat est ignorée
httpErreurRenvoiHTTP
Renvoi vers un serveur non sécurisé
httpIgnoreRenvoiHTTPLe renvoi vers un serveur non sécurisé est autorisé.
httpErreurRenvoiHTTPS
Renvoi vers un serveur sécurisé
httpIgnoreRenvoiHTTPSLe renvoi vers un serveur sécurisé est autorisé.
httpIgnoreRedirectionLa redirection vers une page est ignorée.
httpIgnoreRévocationLe contrôle du certificat dans la liste des certificats révoqués n'est pas effectué.
Par exemple :
// Lancement d'une requête sur un serveur sécurisé
ResLancement = HTTPRequête("https://www.MonServeur.com")
// Si erreur rencontrée
SI ResLancement = Faux ALORS
// Selon le type d'erreur rencontré
SELON ErreurInfo(errCode)
// Certificat invalide
// ou ne provenant pas d'une société connue
CAS httpErreurCertificatInvalide :
// Ignorer le certificat ?
SI OuiNon("Alerte de sécurité détectée !", ...
"Certificat invalide.", ...
"Ignorer ce certificat ?") = Oui ALORS
HTTP.IgnoreErreur = httpIgnoreCertificatInvalide
// Nouveau lancement de la requête
// en ignorant cette erreur
HTTPRequête("https://www.MonServeur.com")
FIN
// Date du certificat non-valide ou expiré
CAS httpErreurCertificatExpiré :
// Ignorer la date du certificat ?
SI OuiNon("Alerte de sécurité détectée !", ...
"Date du certificat invalide ou expiré.", ...
"Ignorer cette date ?") = Oui ALORS
HTTP.IgnoreErreur = httpIgnoreCertificatExpiré
// Nouveau lancement de la requête
// en ignorant cette erreur
HTTPRequête("https://www.MonServeur.com")
FIN
FIN
FIN
Remarques :
  • Lorsque des requêtes HTTP sont faites dans plusieurs threads, la variable HTTP.IgnoreErreur possède une valeur spécifique par thread.
  • AndroidWidget AndroidUniversal Windows 10 AppJava Les erreurs concernant la sécurité des transactions sont ignorées. La variable HTTP.IgnoreErreur n'est pas disponible.
  • Universal Windows 10 App Les erreurs concernant la sécurité des transactions sont ignorées. La variable HTTP.IgnoreErreur n'est pas disponible.
  • AndroidWidget AndroidJava
    Avant la version 200057, les erreurs concernant la sécurité des transactions étaient ignorées. La variable HTTP.IgnoreErreur n'était pas disponible.
    A partir de la version 200057, les erreurs suivantes sont gérées : httpIgnoreCertificatExpiré, httpIgnoreCertificatInvalide, httpIgnoreNomCertificatInvalide, httpIgnoreRévocation. Les autres erreurs sont ignorées. Par défaut, pour compatibilité, toutes les erreurs sont ignorées sur les projets existants. Ces erreurs sont gérées uniquement sur les nouveaux projets.
    Versions 22 et supérieures
    AndroidWidget Android L'erreur httpIgnoreRedirection est également gérée.
    Nouveauté 22
    AndroidWidget Android L'erreur httpIgnoreRedirection est également gérée.
    AndroidWidget Android L'erreur httpIgnoreRedirection est également gérée.

Récupération

La fonction HTTPDonneRésultat permet de récupérer le résultat de la dernière requête HTTP lancée.
Lorsqu'une destination fichier est précisée avec la fonction HTTPDestination :
  • la fonction HTTPDonneRésultat utilisée avec la constante httpRésultat renvoie toujours une chaîne vide ("").
  • la fonction HTTPDonneRésultat utilisée avec la constante httpEntête renvoie toujours l'entête de la réponse HTTP. Cet entête n'est pas enregistré dans le fichier destination : seules les données sont enregistrées.
Lorsque la requête est terminée, la destination est annulée et la fonction HTTPRequête fonctionne normalement.
WINDEVWEBDEV - Code ServeurEtats et RequêtesWindows MobileUniversal Windows 10 AppPHPAjaxCode Utilisateur (MCU)

Accéder à une URL protégée par mot de passe

Pour accéder à une URL protégée par mot de passe, il est possible :
  • soit d'utiliser les paramètres <Nom User> et <Mot de passe> de la syntaxe de la fonction HTTPRequête.
  • soit de préciser directement dans le paramètre <URL à contacter> le login et le mot de passe. Par exemple :
    <Res> = HTTPRequête("http://<user>:<password>@<URL à contacter>")
WINDEVWEBDEV - Code ServeurEtats et RequêtesWindows MobilePHPAjaxCode Utilisateur (MCU)

Utilisation d'un proxy

Pour accéder à l'URL spécifiée dans la fonction HTTPRequête via un proxy, utilisez la fonction Proxy.
WINDEVWEBDEV - Code ServeurEtats et RequêtesWindows MobileUniversal Windows 10 AppPHPAjaxCode Utilisateur (MCU)

En-têtes d'authentification

Les entêtes d'authentification sont générées automatiquement dans les cas suivants :
  • Si la fonction HTTPRequête utilise la syntaxe avec login et mot de passe.
  • Si l'URL serveur est protégée par mot de passe.
  • Si la fonction Proxy est utilisée.
Windows Mobile

Cache sous Windows Mobile

Sous Windows Mobile, une mise en cache peut provoquer la récupération d'un résultat inattendu si une même requête est répétée. Pour éviter cette mise en cache, un entête HTTP supplémentaire peut être ajouté. Par exemple :
sAgent est une chaîne = "Mozilla/4.0 (compatible - MSIE 4.01 - Windows CE)"
Résultat1 = HTTPRequête("http://UrlRequete", sAgent, "Cache-Control: No-cache")
AndroidWidget Android

Permissions requises

L’utilisation de cette fonction entraîne la modification des permissions requises par l’application.
Permission requise : INTERNET.
Cette permission permet aux applications d'ouvrir des sockets réseau.
Universal Windows 10 App

Limites

  • Le proxy utilisé est celui d'Internet Explorer.
  • Il n'est pas possible d'ignorer les certificats.
Versions 21 et supérieures
Universal Windows 10 App

Fonctionnalité d'application requise

L’utilisation de cette fonction entraîne la déclaration d'une fonctionnalité d'application dans l'assistant de génération de l'application.
Fonctionnalité requise : Internet et réseaux publics (sortant).
Cette fonctionnalité permet aux applications d'utiliser des accès à Internet et aux réseaux publics.
Nouveauté 21
Universal Windows 10 App

Fonctionnalité d'application requise

L’utilisation de cette fonction entraîne la déclaration d'une fonctionnalité d'application dans l'assistant de génération de l'application.
Fonctionnalité requise : Internet et réseaux publics (sortant).
Cette fonctionnalité permet aux applications d'utiliser des accès à Internet et aux réseaux publics.
Universal Windows 10 App

Fonctionnalité d'application requise

L’utilisation de cette fonction entraîne la déclaration d'une fonctionnalité d'application dans l'assistant de génération de l'application.
Fonctionnalité requise : Internet et réseaux publics (sortant).
Cette fonctionnalité permet aux applications d'utiliser des accès à Internet et aux réseaux publics.
Composantes
WINDEVWEBDEV - Code ServeurEtats et Requêtes wd220com.dll
Windows Mobile wp220com.dll
Java wd220java.jar
Linux wd220com.so
Android wd220android.jar
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Valeurs Agent Utilisateur (User-Agent)
Bonjour,

Vous trouverez à cette adresse une liste non exhaustive mais conséquente de valeurs possibles en fonction des navigateurs.

http://fr.wikipedia.org/wiki/User-Agent

Cordialement ...
Arnaud DUSSART ( AST
22 déc. 2009