PC SOFT - Documentation en ligne
Version : 18.0
Communauté : 1 annotation | Consulter Flux RSS
Cette page est également disponible pour : WINDEV Mobile, WINDEV, WEBDEV
Version affichée :
Importation de Webservices
 

 
WinDev WebDev - Code Serveur WebDev - Code Navigateur WinDev Mobile Etats et Requêtes   Windows Linux Windows Mobile Windows Phone Android Widget Android iPhone/iPad Windows Store apps   Java PHP Ajax Code Utilisateur (MCU) Langage Externe   HyperFileSQL HyperFileSQL Client/Serveur Procédures stockées Hyper File 5.5 OLE DB ODBC Accès Natifs

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
WinDev Java Cette fonctionnalité est désormais disponible pour les applications Java.
WinDev Mobile Android Cette fonctionnalité est désormais disponible pour les applications Android.
WinDev Mobile 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
WinDev Java Cette fonctionnalité est désormais disponible pour les applications Java.
WinDev Mobile Android Cette fonctionnalité est désormais disponible pour les applications Android.
WinDev Mobile 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.
WinDev Java Cette fonctionnalité est désormais disponible pour les applications Java.
WinDev Mobile Android Cette fonctionnalité est désormais disponible pour les applications Android.
WinDev Mobile 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.

Importer un Webservice dans un projet
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.1. 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.

2. Sélectionnez la description WSDL du service à importer. Cette description peut être chargée :

  • soit à partir d'une adresse Internet,
  • soit depuis un fichier XML présent sur le poste en cours.
3. Validez l'assistant. Le Webservice est automatiquement ajouté dans le volet "Explorateur de projet" (dans la branche "Webservices"). Il est prêt à être utilisé.
Compatibilité avec les versions antérieures

Remarque : par compatibilité, il est toujours possible d'importer des Webservices en utilisant les mécanismes de WinDev 14. Si ce mode d'importation est utilisé, les nouvelles fonctionnalités des Webservices ne seront pas disponibles.

Dans ce cas, les manipulations sont les suivantes :

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.1. Sous le volet "Projet", dans le groupe "Projet", déroulez "Importer" et sélectionnez "Un Webservices (Soap, .Net, J2EE)". L'assistant d'importation d'un Webservice se lance.

2. Sélectionnez la description WSDL du service à importer. Cette description peut être chargée :

  • soit à partir d'une adresse Internet,
  • soit depuis un fichier XML présent sur le poste en cours.
Cochez l'option "Importer en mode compatible version 14".

3. Sélectionnez les spécificités du Webservice. Ces spécificités permettent de définir les fonctions WLangage à utiliser dans les procédures générées :

Remarque : Si vous ne connaissez pas les spécificités du Webservice, sélectionnez les Fonctions SOAP.

4. Indiquez si le service doit être importé dans une classe ou une collection de procédures. Vous avez la possibilité de spécifier si les éléments du service (classe, structure, membre) doivent être automatiquement préfixés ou non.

5. Selon les options choisies, sélectionnez :

  • le nom et le fichier de la collection de procédures à générer (fichier ".WDG")
  • le nom et le fichier de la classe à générer (fichier ".WDC")
6. Validez. La collection de procédures ou la classe correspondante est automatiquement générée et associée au projet en cours.

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
Propriétés d'un Webservice modifiables dans l'éditeur

Pour modifier les propriété 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.
Remarque : Les propriétés modifiables dans l'éditeur et les propriétés modifiables par programmation n'ont pas de lien.
Propriétés d'un Webservice modifiables par programmation

Pour manipuler un Webservice par programmation, il suffit d'utiliser le nom du Webservice. Ce nom est présent dans le volet "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èresCette propriété permet de remplacer l'adresse d'appel du Webservice décrite dans le WSDL par une autre URL.

Cette propriété est de la forme : "http://serveur:port/chemin_du_webservice".

Par exemple, 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é reçoit une chaîne vide, les URL décrites dans le WSDL seront de nouveaux utilisées.
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é.
PortChaîne de caractèresNom du port défini dans le WSDL.
UtilisateurChaîne de caractèresNom d'utilisateur utilisé pour réaliser l'authentification lors des requêtes HTTP au Webservice.
MotDePasseChaîne de caractèresMot de passe utilisé pour réaliser l'authentification lors des requêtes HTTP au 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.

Utiliser un Webservice importé dans le projet
Pour utiliser la collection de procédures du Webservice, il suffit d'appeler les fonctions générées automatiquement lors de l'importation.

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

Android Java Il n'est pas possible d'utiliser une méthode gérant un contexte partagé.
Exemple 1 :

Un Webservice prend en paramètre une variable de type simple (entier) et retourne un autre type simple (un autre entier).

Dans cet exemple, une fonction d'addition ajoute 5 à la valeur passée en paramètre. Le service a été importé sous le nom WSAddition.
Son appel peut se faire de la façon suivante :

// Déclaration d'une variable du type du résultat de la fonction du service Web
// (nécessaire même si c'est un type simple)
ResWebService est un WSAddition.additionResponse // (le nom du service Web est optionnel pour le type)
// Déclaration d'une variable du type du paramètre attendu par la fonction du service Web
// (pour les types simples, il est possible d'utiliser directement le type du WLangage, ici un entier)
ParamWebService est un WSAddition.addition // (le nom du service Web est optionnel pour le type)
// Affectation du paramètre
ParamWebService.a1=5
// Appel de la fonction du service Web
ResWebService=WSAddition.addition(ParamWebService) // (le nom du service Web est optionnel pour la fonction)
// on vérifie que la fonction a réussi
SI ErreurDétectée = Vrai ALORS
        // Erreur
        Erreur("Echec de l'appel au service Web",ErreurInfo())
SINON
        // Fonction OK
        // Affichage du résultat
        Info("Valeur renvoyé par le service Web : ",ResWebService.additionResult..Valeur)
FIN
Exemple 2 :

Un Webservice retourne les lignes d'une table de multiplication.
Il a été importé sous le nom WSMultiplie.
Son appel peut se faire de la façon suivante :

// La fonction TableMultiplie du Webservice prend deux paramètres :
// - La table de multiplication à renvoyer
// - Le nombre de lignes à renvoyer
// Elle retourne son résultat dans une variable de type WSMultiplieResultat

// Appel du Webservice
res est un WSMultiplieResultat = TableMultiplie(5,3)

Trace("Type de variable renvoyé : "+res..Type)        

// Traitement du résultat
POUR n=1 A res.LigneTable..Occurrence
        Trace("Type de variable renvoyé : "+res.LigneTable[n]..Type)        
        Trace("Valeur de la variable renvoyée : "+res.LigneTable[n]..Valeur)        // équivalent à res.LigneTable[n]
FIN

// La trace d'exécution affichera les lignes suivantes :
// Type de variable renvoyé : WSMultiplieRésultat
// Type de variable renvoyé : LigneTable
// Valeur de la variable renvoyée : 5x1=5
// Type de variable renvoyé : LigneTable
// Valeur de la variable renvoyée : 5x2=10
// Type de variable renvoyé : LigneTable
// Valeur de la variable renvoyée : 5x3=15
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 en-têtes dans leur flux XML pour permettre l'authentification ou retournent des meta informations dans les en-tê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 en-têtes personnalisés dans un appel de Webservice.
SOAPRécupèreEntêteRelit les informations présentes dans l'en-tê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/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 shé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 Exemple Didactique (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 Exemple Didactique (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 : 9
Communauté : 1 annotation Flux RSS
Connectez-vous pour ajouter une annotation | Conditions Générales du service d'annotations
  • Sébastien BOUDOT
    31 mai 2012
    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é )