La consommation d'un webservice depuis une application WINDEV, WINDEV Mobile, ou depuis un site WEBDEV est simplifiée à l'extrême grâce à l'importation du webservice dans le projet à partir de son WSDL. Il suffit d'appeler la fonction du webservice en lui passant les paramètres attendus :

// Appel de la fonction du webservice, en donnant ses paramètres
FonctionDuWebservice(WSparam1, WSparam2, ...)

 

L'ensemble du processus est détaillé dans la page suivante de l'aide : importation/consommation de Webservices.

 

L'appel des fonctions d'un webservice se fait en règle général en https. Dans ce cas le serveur web qui héberge le webservice dispose d'un certificat dont la validité permet de s'assurer et de garantir un transport sûr des données.

 

Mais une sécurité renforcée peut être exigée par certains fournisseurs ou dans un Intranet. Dans ce cas un certificat client peut être imposé, et doit être fourni à chaque appel des fonctions du webservice. Le WLangage répond bien sûr à cette exigence, cependant à ce jour l'aide associée n'est pas encore disponible. Voici donc la méthode :

 

 

// Déclaration d'une variable de type wsRequete permettant de fournir
// les caractéristiques spécifiques d'une requête
wsSpécif est un wsRequête
wsSpécif..CertificatClient = "<chemin>\fichier.p12"
wsSpécif..MotDePasseCertificatClient = "mot de passe du certificat"

// Appel de la fonction du webservice, en donnant ses spécifications
// en premier paramètre, les paramètres suivants sont les paramètres
// déclarés dans le WSDL, et visibles dans l'Explorateur du projet
FonctionDuWebservice(wsSpécif , WSparam1, WSparam2, ...)

 

La propriété ..CertificatClient du type wsrequête peut être affectée avec :

  • 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 dans la bibliothèque de l'exécutable si on souhaite l'intégrer à l'application,
    • à l'emplacement spécifié sur disque, s'il n'est pas dans l'exécutable, ou plus précisément dans sa bibliothèque (WDL).
  • ou un buffer chargé avec le certificat (fChargeBuffer).

 

Liens utiles de l'aide qui seront rapidement complétés sur ce sujet :

< Retour

5 commentaires

SIEWE Ignace
21/04/2019 - 12:53 - Répondre
Bonjour Guillaume, Merci pour le document Effectivement, j'ai un webservice (fichier wsdl) que j'ai importe dans mon projet suivant la procedure habituelle. Donc, a partir du projet, je peux bien voir le webservice et toutes les descriptions. Le probleme ici c'est que le client m'a remis un certificat et un mot de passe pour pouvoir utiliser le webservice. J'y ai cherche comment faire pour importer le certificat dans le projet et sans succes. En ce moment, j'utilise la version V22 de Windev Mobile... Une commande est encours pour la migration vers la V24, cela devrait se faire dans 2 semaines si tout se passe bien. Cependant, j'ai essaye de reproduire le code ci-dessous dans mon programme pour pouvoir consommer le webservice de mon client mais je n'y parviens toujours pas. Le type wsRequete n'est pas reconnu chez moi. J'ai plutot le type wsClient. Du coup j'ai une erreur quand j'execute le programme wsSpécif est un wsRequête wsSpécif ..CertificatClient = "\fichier.p12" wsSpécif ..MotDePasseCertificat = "mot de passe du certificat" ci-dessous mon code gWsSpecif est un wsClient wsSpecif..Certificat="https://www.mondomaine.com/certificat/moncertificat.p12" wsSpecif.MotDePasse ="passcertificat" r est un SetRecharge Lareponse est SetRechargeResponse r.card.CardID=1015277 r.card.Amount=90 Lareponse=ServiceClient.SetRecharge(wsSpecif, r) Info(Lareponse.SetRechargeResult.) stp, pourrais-tu me dire ce qui est a corriger ? NB : Mon programme doit fonctionner sur Android.

Guillaume BAYLE
23/04/2019 - 09:20 - Répondre
Bonjour, j'ai corrigé une erreur dans le billet la propriété pour le mot de passe est ..MotDePasseCertificatClient (nouveauté 24). N'hésitez pas à contacter notre support si le moindre doute subsiste sur les traitements à mettre en place dans votre cas précis.

SIEWE Ignace
21/04/2019 - 12:58 - Répondre
ci-dessous mon code WsSpecif est un wsRequete wsSpecif..Certificat="https://www.mondomaine.com/certificat/moncertificat.p12" wsSpecif.MotDePasse ="passcertificat" r est un SetRecharge Lareponse est SetRechargeResponse r.card.CardID=1015277 r.card.Amount=90 Lareponse=ServiceClient.SetRecharge(wsSpecif, r) Info(Lareponse.SetRechargeResult.)

SIEWE Ignace
21/04/2019 - 13:01 - Répondre
CONSIDEREZ PLUTOT CE CODE WsSpecif est un wsRequete wsSpecif..CertificatClient ="https://www.mondomaine.com/certificat/moncertificat.p12" wsSpecif.MotDePasseCertificat ="passcertificat" r est un SetRecharge Lareponse est SetRechargeResponse r.card.CardID=1015277 r.card.Amount=90 Lareponse=ServiceClient.SetRecharge(wsSpecif, r) Info(Lareponse.SetRechargeResult.)

Amine MERIMI
02/04/2021 - 18:16 - Répondre
Bonjour, Est-il possible de remplacer un fichier .p12 ou .pfx par une variable Certificat en utilisant les fonctions CertificatListe() et CertificatSélecteur() ? Cela permettrait d'éviter d'utiliser des fichiers mais d'utiliser les certificats installés et mis à jour sur une machine et/ou un compte utilisateur. Merci Cordialement

Publier un commentaire : 
Votre adresse email ne sera pas publiée