 |
Cette page est également disponible pour : WINDEV Mobile, WINDEV, WEBDEV
| Version affichée : |
|
| | Importation de Webservices | |
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 Nouveauté 17 |
|
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 : | | | | Nom | Type manipulé | Effet | | Adresse | Chaîne de caractères | Cette 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.
| | IgnoreErreur | Combinaison de constantes | Permet 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é.
| | Port | Chaîne de caractères | Nom du port défini dans le WSDL. | | Utilisateur | Chaîne de caractères | Nom d'utilisateur utilisé pour réaliser l'authentification lors des requêtes HTTP au Webservice. | | MotDePasse | Chaîne de caractères | Mot 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 : | | | | Nom | Type manipulé | Effet | | Existe | Booléen | - Vrai si le type de variable existe dans la réponse du Webservice,
- Faux dans le cas contraire.
| | Occurrence | Entier | Nombre 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. | | Type | Chaîne de caractères | Nom 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. | | Valeur | Variant | Valeur 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
|
|
| 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épare | Construit la requête au Webservice pour une fonction et des paramètres donnés mais n'envoie pas la requête. | | SOAPAjouteEntête | Ajoute des en-têtes personnalisés dans un appel de Webservice. | | SOAPRécupèreEntête | Relit les informations présentes dans l'en-tête de la réponse d'un Webservice. | | SOAPAjouteAttribut | Dé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 :
|
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".
|
|
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  Connectez-vous pour ajouter une annotation | Conditions Générales du service d'annotations
| |
| |
| |  | |