PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • Présentation
  • Importer un Webservice dans un projet
  • Importation
  • Explorateur de projet : visualiser un webservice
  • Description et propriétés d'un Webservice
  • Mettre à jour la description d'un Webservice
  • Propriétés d'un Webservice modifiables dans l'éditeur
  • Utilisation d'un Webservice
  • Principe
  • Propriétés associées au Webservice
  • Propriétés disponibles sur les types de variables
  • Manipulation avancée du flux XML du Webservice
  • Cas particulier : le Webservice renvoie un résultat dans un type non reconnu par WINDEV, WEBDEV et WINDEV Mobile
  • Distribuer une application WINDEV qui utilise un Webservice
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
Présentation
WINDEV, WEBDEV et WINDEV Mobile permettent d'importer directement des Webservices dans vos applications.
Un Webservice est un ensemble de points d'entrées mis à la disposition des utilisateurs afin d'effectuer différents traitements. Par exemple, un service d'accès distant met à votre disposition les traitements d'accès aux données. Les échanges d'informations avec un Webservice se font au format XML et utilisent les protocoles SOAP (Simple Object Access Protocol) et HTTP.
A partir de la description au format WSDL (Web Services Description Language) de ce service, WINDEV, WEBDEV ou WINDEV Mobile va générer automatiquement des types et des fonctions WLangage correspondants à l'interface de programmation du Webservice.
Remarque : Par compatibilité avec les versions précédentes, il est également possible de demander la génération d'une collection de procédures ou d'une classe dont les méthodes correspondent aux opérations du Webservice. Il est néanmoins recommandé d'utiliser le nouveau mécanisme de génération automatique de types natifs.
Pour utiliser le Webservice, il suffit d'utiliser les fonctions générées au moment de l'import.
Cette page d'aide présente :
Versions 17 et supérieures
Java Cette fonctionnalité est désormais disponible pour les applications Java.
Android Cette fonctionnalité est désormais disponible pour les applications Android.
iPhone/iPad Cette fonctionnalité est désormais disponible pour les applications iPhone/iPad.
Android L'utilisation d'un Webservice dans un projet Android est disponible à partir de Android version 2.2.
Java L'utilisation d'un Webservice dans un projet Java nécessite une machine virtuelle Java (JRE) en version 6 (ou 1.6) ou supérieure.
Nouveauté 17
Java Cette fonctionnalité est désormais disponible pour les applications Java.
Android Cette fonctionnalité est désormais disponible pour les applications Android.
iPhone/iPad Cette fonctionnalité est désormais disponible pour les applications iPhone/iPad.
Android L'utilisation d'un Webservice dans un projet Android est disponible à partir de Android version 2.2.
Java L'utilisation d'un Webservice dans un projet Java nécessite une machine virtuelle Java (JRE) en version 6 (ou 1.6) ou supérieure.
Java Cette fonctionnalité est désormais disponible pour les applications Java.
Android Cette fonctionnalité est désormais disponible pour les applications Android.
iPhone/iPad Cette fonctionnalité est désormais disponible pour les applications iPhone/iPad.
Android L'utilisation d'un Webservice dans un projet Android est disponible à partir de Android version 2.2.
Java L'utilisation d'un Webservice dans un projet Java nécessite une machine virtuelle Java (JRE) en version 6 (ou 1.6) ou supérieure.
Versions 18 et supérieures
Universal Windows 10 App Cette fonctionnalité est désormais disponible pour les applications en mode Windows Store apps.
Nouveauté 18
Universal Windows 10 App Cette fonctionnalité est désormais disponible pour les applications en mode Windows Store apps.
Universal Windows 10 App Cette fonctionnalité est désormais disponible pour les applications en mode Windows Store apps.
Importer un Webservice dans un projet

Importation

Pour importer un Webservice :
  1. Sélectionnez l'option "Atelier .. Webservices (SOAP, .Net, J2EE) .. Importer et utiliser un Webservice dans ce projet". L'assistant d'importation d'un Webservice se lance.Sous le volet "Projet", dans le groupe "Projet", déroulez "Importer" et sélectionnez "Un Webservice (Soap, .Net, J2EE)".
    L'assistant d'importation d'un Webservice se lance.
    Sous le volet "Projet", dans le groupe "Projet", déroulez "Importer" et sélectionnez "Un Webservice (Soap, .Net, J2EE)". L'assistant d'importation d'un Webservice se lance.Sous le volet "Projet", dans le groupe "Projet", déroulez "Importer" et sélectionnez "Un Webservice".
    Menu d'importation d'un Webservice
    L'assistant d'importation d'un Webservice se lance.
  2. Dans l'assistant, l'écran de présentation s'affiche. Passez à l'étape suivante.
  3. Indiquez la localisation du WSDL (prononcer wizdeul). Ce fichier correspond à la description du webservice. Il contient la description de chaque fonction contenue dans le Webservice ainsi que leurs paramètres.
    Deux méthodes peuvent être utilisées pour localiser le WSDL :
    • soit à partir d'une URL, adresse HTTP où se trouve le WSDL.
      Remarques :
      • Il est possible d'indiquer le nom d'utilisateur et le mot de passe si une authentification est nécessaire.
      • Versions 22 et supérieures
        Le bouton "Proxy" permet de configurer les options du proxy si nécessaire.
        Nouveauté 22
        Le bouton "Proxy" permet de configurer les options du proxy si nécessaire.
        Le bouton "Proxy" permet de configurer les options du proxy si nécessaire.
    • soit depuis un fichier XML présent sur le poste en cours.
    Note : Il n'est pas conseillé de cocher la case "Importer en mode compatible version 14". Dans ce cas, la gestion des appels au Webservice est plus complexe et les nouveaux types ne sont pas gérés (tableaux, structure, ...). Pour plus de détails, consultez Importation de Webservices en mode compatible.
  4. Validez l'assistant. Un message apparaît indiquant que l'importation est terminée.
  5. Le Webservice est automatiquement ajouté dans le volet "Explorateur de projet" (dans la branche "Webservices"). Il est prêt à être utilisé.

Explorateur de projet : visualiser un webservice

Le Webservice importé est présent dans le dossier "Webservices" de l'explorateur de projet :
La structure est constituée de :
  • le nom du Webservice (GlobalWeather dans cet exemple).
  • le nom de chaque fonction (GetCitiesByCountry et GetWeather dans cet exemple).
  • le nom d'une structure contenant soit les paramètres d'appel (GetWeather dans cet exemple), soit les valeurs de retour (GetWeatherResponse dans cet exemple).
  • le nom de chaque variable de la structure (CountryName et CityName dans cet exemple).
Dans notre exemple, le Webservice importé se nomme : GlobalWeather. Il contient 2 fonctions :
  • GetCitiesByCountry
  • GetWeather
La fonction GetCitiesByCountry contient 2 structures :
  • GetCityByCountry
  • GetCityByCountryResponse
La fonction GetWeather contient 2 structures :
  • GetWeather
  • GetWeatherResponse
La structure GetWeather contient 2 variables (CityName et CountryName) correspondant aux valeurs à passer en paramètre pour l'appel de la fonction GetWeather.
La structure GetWeatherResponse contient une variable (GetWeatherResult) correspondant à la valeur de retour de la fonction.
Description et propriétés d'un Webservice

Mettre à jour la description d'un Webservice

Lorsqu'un Webservice évolue (corrections, nouvelles versions, etc.), sa description peut également être amenée à évoluer.
Pour mettre à jour la description d'un Webservice dans votre projet :
  1. Sélectionnez le Webservice dans le volet "Explorateur de projet".
  2. Sélectionnez l'option "Mettre à jour" du menu contextuel.
Remarque : Les Webservices importés en utilisant le mécanisme de compatibilité avec les versions précédentes ne peuvent pas être mis à jour.

Propriétés d'un Webservice modifiables dans l'éditeur

Pour modifier les propriétés d'un Webservice dans l'éditeur :
  1. Sélectionnez le Webservice dans le volet "Explorateur de projet".
  2. Choisissez l'option "Description" du menu contextuel.
  3. La fenêtre des propriétés s'ouvre. Dans cette fenêtre, il est possible de modifier les propriétés suivantes :
    • L'adresse d'importation du Webservice : il s'agit de l'URL permettant d'atteindre le WSDL décrivant le Webservice.
    • Le nom d'utilisateur et le mot de passe utilisés pour importer le WSDL.
Utilisation d'un Webservice

Principe

Pour utiliser un Webservice, il faut :
  1. Déclarer 2 variables : une variable permettant de spécifier les paramètres d'appel, une variable permettant de récupérer la réponse.
  2. Initialiser chaque variable de la structure d'appel.
  3. Appeler la fonction du Webservice en passant en paramètre la variable d'appel et récupérer en retour la variable de réponse.
Exemple :
v1 est un GetWeather
v2 est un GetWeatherResponse

v1.CountryName = "FRANCE"
v1.CityName = "MONTPELLIER"

v2 = GetWeather(v1)

Info(v2.GetWeatherResult)
Le résultat renvoyé par le Webservice est généralement au format XML. Il est donc nécessaire d'utiliser et de connaître les fonctions XML pour décoder la réponse.

Propriétés associées au Webservice

Pour manipuler un Webservice par programmation, il suffit d'utiliser le nom du Webservice (présent dans l'explorateur de projet).
Remarque : Il est possible de faire un glisser-déposer directement depuis l'explorateur de projet vers l'éditeur de code pour insérer le nom du Webservice.
Les propriétés modifiables par programmation sont :
NomType manipuléEffet
AdresseChaîne de caractèresPermet de remplacer l'adresse d'appel du Webservice décrite dans le WSDL par une autre URL. Cette propriété est notamment utile si le Webservice est hébergé sur des serveurs différents.
Cette propriété est de la forme : "http://serveur:port/chemin_du_webservice".
Dans le cas d'un Webservice généré avec WINDEV et déployé sur un Serveur d'Application WEBDEV, il s'agit de l'URL du fichier d'extension "awws".
Remarques :
  • La modification de cette propriété remplace toutes les URL décrites dans le WSDL.
  • Si cette propriété correspond à une chaîne vide (""), les URL décrites dans le WSDL seront de nouveau utilisées.
Versions 19 et supérieures
WINDEVWEBDEV - Code Serveur Authentification
Nouveauté 19
WINDEVWEBDEV - Code Serveur Authentification
WINDEVWEBDEV - Code Serveur Authentification
Constante de type entierPermet de forcer la méthode d’authentification HTTP :
  • auAutomatique (valeur par défaut) : méthode d'authentification automatique.
  • auBasic : méthode d'authentification Basic.
  • auNegotiate : méthode d'authentification Negotiate.
IgnoreErreurCombinaison de constantesPermet d'ignorer les erreurs de certificat. les constantes utilisables sont les suivantes :
  • httpIgnoreCertificatInvalide : Permet d'ignorer un certificat invalide ou ne provenant pas d'une société connue.
  • httpIgnoreNomCertificatInvalide : Permet d'ignorer le nom du site figurant dans le certificat.
  • httpIgnoreCertificatExpiré : Permet d'ignorer la date du certificat.
  • httpIgnoreRenvoiHTTP : Permet le renvoi vers un serveur non sécurisé.
  • httpIgnoreRenvoiHTTPS : Permet le renvoi vers un serveur sécurisé.
  • httpIgnoreRévocation : Permet d'ignorer le contrôle dans la liste des certificats révoqués.
AndroidWidget AndroidUniversal Windows 10 AppJava Remarques : Les erreurs concernant la sécurité des transactions sont ignorées. La propriété IgnoreErreur n'est pas disponible.
Remarques :
  • Universal Windows 10 App Les erreurs concernant la sécurité des transactions sont ignorées. La propriété IgnoreErreur n'est pas disponible.
  • AndroidWidget AndroidJava
    Avant la version 200057, les erreurs concernant la sécurité des transactions étaient ignorées. La propriété 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.
Versions 18 et supérieures
MéthodeHTTP
Nouveauté 18
MéthodeHTTP
MéthodeHTTP
Constante de type EntierMéthode HTTP utilisée pour appeler le Webservice :
  • httpPost (valeur par défaut) : Méthode POST
  • httpPut : Méthode PUT
PortChaîne de caractèresNom du port défini dans le WSDL. Il s'agit du port utilisé pour communiquer avec le serveur hébergeant le Webservice. Consultez votre administrateur réseau ou le propriétaire du Webservice.
UtilisateurChaîne de caractèresNom d'utilisateur utilisé pour réaliser l'authentification lors des requêtes HTTP au Webservice. Ce nom est utilisé uniquement dans le cas où une authentification est nécessaire pour accéder au serveur sur lequel est hébergé le Webservice.
MotDePasseChaîne de caractèresMot de passe utilisé pour réaliser l'authentification lors des requêtes HTTP au Webservice. Ce nom est utilisé uniquement dans le cas où une authentification est nécessaire pour accéder au serveur sur lequel est hébergé le Webservice.

Remarque :
  • Si un nom d'utilisateur et un mot de passe sont spécifiés, l'authentification des requêtes HTTP se fera en utilisant le schéma d'authentification "Basic", dans lequel les paramètres sont en clair dans la requête HTTP. Il est préférable d'utiliser des requêtes HTTPS si l'authentification est nécessaire.
  • Si le serveur qui héberge le Webservice nécessite une authentification Windows en HTTP, il faut utiliser la fonction HTTPParamètre avant de consommer le Webservice (afin d'utiliser Internet Explorer pour les requêtes HTTP).
Attention : Les propriétés modifiables dans l'éditeur et les propriétés modifiables par programmation n'ont pas de lien.

Propriétés disponibles sur les types de variables

Les types de variables déclarés automatiquement lors de l'importation du WSDL offrent un certain nombre de propriétés :
NomType manipuléEffet
ExisteBooléen
  • Vrai si le type de variable existe dans la réponse du Webservice,
  • Faux dans le cas contraire.
OccurrenceEntierNombre d'éléments de ce type dans la réponse du Webservice.
Un Webservice peut retourner des tableaux de variables. La propriété ..Occurrence permet de connaître la taille du tableau renvoyée et l'opérateur [ ] permet d'accéder aux éléments du tableau.
TypeChaîne de caractèresNom du type de la variable. Cette propriété est utilisée lorsqu'un Webservice est susceptible de retourner des réponses de différents types.
ValeurVariantValeur de la variable.
Remarque : Cette propriété est accédée par défaut lorsque seul le nom de la variable est utilisé. Par exemple :
monWebservice.VariableRequete = SAI_Valeur
est équivalent à :
monWebservice.VariableRequete..Valeur = SAI_Valeur
AndroidJava Il n'est pas possible d'utiliser une méthode gérant un contexte partagé.

Manipulation avancée du flux XML du Webservice

Dans certains cas, il est nécessaire de manipuler précisément le flux de données XML échangé avec le Webservice. Certains Webservices demandent par exemple d'ajouter des entêtes dans leur flux XML pour permettre l'authentification ou retournent des meta informations dans les entêtes de la réponse.
Pour répondre à ces demandes particulières, les fonctions suivantes peuvent être utilisées :
SOAPPrépareConstruit la requête au Webservice pour une fonction et des paramètres donnés mais n'envoie pas la requête.
SOAPAjouteEntêteAjoute des entêtes personnalisés dans un appel de Webservice.
SOAPRécupèreEntêteRelit les informations présentes dans l'entête de la réponse d'un Webservice.
SOAPAjouteAttributDéclare des attributs supplémentaires (non présent dans le WSDL) sur une variable de Webservice générée automatiquement. Elle est utilisée en programmation avancée dans les cas où le WSDL renvoyé par le Webservice ne correspond pas complètement au type attendu.

Cas particulier : le Webservice renvoie un résultat dans un type non reconnu par WINDEV, WEBDEV et WINDEV Mobile

Les types de variables disponibles dans WINDEV et ceux disponibles dans un Webservice de type SOAP peuvent être différents.
Les types simples (booléen, entier, etc.) et complexes (dateheure, durée, structures, tableaux de types simples et de structures, structures imbriquées, etc.), utilisés dans le Webservice sont automatiquement convertis au format du WLangage (et inversement) lors de l'importation du service dans un projet. Les types Tableaux sont également gérés.
Les types plus évolués (classes, types avancés du WLangage, etc.) sont traités en tant que chaînes de caractères dans le code WLangage. Ces chaînes de caractères contiennent le code XML correspondant au type de variable renvoyé par le Webservice et à son contenu.
Ainsi, si un Webservice renvoie un résultat sous forme d'instance de classe, ce résultat sera traité dans la procédure comme une chaîne de caractères au format XML. Il sera ensuite nécessaire de traiter cette chaîne de caractères (en WLangage) pour en extraire les informations voulues. Pour plus de détails, consultez les fonctions XML.
Remarques :
  • Si le Webservice retourne une structure, le nom des membres de la structure de retour est sensible à la casse.
  • Si vous utilisez une structure en paramètre d'une fonction d'un Webservice et si un membre de type DATE n'est pas affecté, l'erreur "La valeur 0000-00-00 ne respecte pas le schéma XSD" sera affichée.
Distribuer une application WINDEV qui utilise un Webservice
Pour distribuer une application qui utilise un Webservice, il suffit d'intégrer le fichier décrivant le Webservice (fichier .wdsdl) dans la bibliothèque de l'application.
Pour que l'application puisse exécuter le Webservice, le poste des utilisateurs finaux doit disposer d'un accès à Internet.
Remarque : Avant de distribuer une application qui utilise un Webservice, il est conseillé de vérifier la licence d'utilisation et les droits d'utilisation de ce service (cas des services payants).
Liste des exemples associés :
WD Client Webservice Exemples didactiques (WINDEV) : WD Client Webservice
[ + ] Cet exemple illustre l'utilisation des WebServices.
Il montre comment récupérer, à partir d'un WebService, des images en fonction de mots clés.
Ce projet est le client qui se connecte au WebService "WD Serveur Webservice".
WD Serveur Webservice Exemples didactiques (WINDEV) : WD Serveur Webservice
[ + ] Cet exemple illustre l'utilisation des WebServices.
Il montre comment créer un WebService fournissant des images en fonction de mots clés.
Ce projet est le WebService qui est utilisé par le projet WD Client Webservice.
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Erreur sur Smartphone
Cet exemple me retourne cette erreur depuis un Smartphone S3 (WM 20 )
Erreur interne du framework WDjava : org.ksoap2.transport.ServiceConnection.SetHostnameVerifier
MS
20 jan. 2016
Si vous obtenez une erreur 100138 / 12057 à l'éxécution
Cette erreur survient lors de l'utilisation de services en HTTPS.

Il faut décocher dans les options internet explorer le paramètre "Vérifier la révocation des certificats serveur*" ( Options internet, onglet Avancé, branche Sécurité )
Sébastien BOUDOT
31 mai 2012