Nous allons utiliser la classe Java wsdl2ws.sh livrée par Apache Axis afin qu’il nous génère tous les programmes clients nécessaires pour consommer ce Service Web. Nous ne détaillerons pas ici tous les paramètres attendus, mais vous pourrez visualiser l’aide en ligne de cette commande en tapant wsdl2ws.sh
Génération automatique des Stubs en C/C++
Génération automatique des Stubs en C/C++
-h sous QSH dans le répertoire /QIBM/ProdData/OS/WebServices/V1/client/BIN/
Voir figure 4.
A l’issu de la commande (figure 4), des sources de programmes en C (si -LC n’avait pas été indiqué au paramètre (1) du C++ aurait été généré) ont été créées dans le répertoire (2) à partir du WSDL fourni en (3).
Avec notre WSDL, on récupère StockQuoteSoap.h et StockQuoteSoap.c. En regardant les déclaratives dans le .h on peut voir : voir figure 5.
Chaque Service Web possède 4 fonctions « standards » comme montré en (1) de la Figure 5 ainsi qu’une ou plusieurs fonctions (2) d’appel du service lui-même.
Le Get___Stub permet d’initialiser et ouvrir la connexion, Destroy___Stub de la fermer, Get___Status de tester la dernière opération effectuée et Set___ExceptionHandler de gérer les erreurs SOAP.
Pour consommer notre service web depuis notre RPG, il nous faudra au minimum appeler les fonctions prototypées Get_StockQuoteSoap_stub(), GetQuote() ainsi que la fonction Destroy_StockQuoteSoap_stub(). Mais avec quels paramètres ?
AXISCHANDLE get_StockQuoteSoap_stub(const char* pchEndPointUri);
Cette fonction C reçoit en paramètre un char* c’est-à-dire un pointeur et renvoie aussi un pointeur à travers le Typdef AXISCHANDLE (il s’agit en fait du handle de la connexion établie).
void destroy_StockQuoteSoap_stub(AXISHANDLE pStub);
Cette fonction reçoit en paramètre le handle (renvoyé par Get___Stub) avec lequel la connexion a été établie, par contre ne renvoie aucune valeur (void).
xsdc__string GetQuote(AXISCHANDLE pStub, xsdc__string Value0);
Cette fonction est la plus importante car il s’agit su service en lui-même et les paramètres varient pour chaque Service Web invoqué. Elle reçoit le handle de la connexion (pointeur) ainsi qu’une variable de type « xsdc__string » et renvoie aussi un « xsdc__string » en retour. Mais ce type n’est pas standard, c’est un type défini dans Axis. S’agit-il d’un char (string) comme il semble le paraître ? Pour cela il faut regarder dans /QIBM/ProdData/OS/WebServices/V1/client/include/axis/AxisUserApi.h, il s’agit en fait aussi d’un pointeur. Voir figure 6.
Ecriture du programme Client
Maintenant que nous connaissons les fonctions à appeler ainsi que les bons paramètres, nous pouvons écrire notre RPG ILE pour consommer notre premier Service Web. Voir figure 7.
N’est-ce pas formidable ? En quelques lignes de code, vous consommez déjà votre premier Service Web en invoquant directement la bourse de New York. Le problème, StockQuote renvoie un fichier XML complet comme montré à la figure 3, il vous faudra soit extraire ces données par des %scan, %substr etc… ou simplement en utilisant le nouveau code opération XML-INTO de la V5R4. Je vous rassure, tous les Services Web ne renvoient pas forcément un résultat dans un champ caractère contenant du XML. Mais avec StockQuote c’est le cas.
Pour affecter proprement le contenu du XML dans des zones, il vous faudra décrire une Data Structure ayant la même forme que le XML résultant et possédant les mêmes noms de zone. Le but de cet article n’est pas de vous apprendre à utiliser XML-INTO, ce code opération est bien documenté, mais pour l’exemple, voici ce qu’il faudra rajouter à votre programme : Voir figure 8
Compilation et liage des modules
Il faut maintenant compiler le tout, c’est-à-dire les Stubs C/C++ d’Axis ainsi que notre ILE RPG pour en faire un programme unique. Voir figure 9.
Conclusion
Consulter la bourse ou la météo en temps réel, envoyer des SMS en masse, contrôler un Swift IBAN/BIC, etc… tout cela est simple à faire en ILE RPG ou COBOL ! Les services SOAP sont nombreux et diversifiés sur la toile, mais pensez-y aussi pour faire communiquer vos applicatifs intranet entre eux surtout s’ils résident sur des plates-formes hétérogènes.
Téléchargez cette ressource
Guide inmac wstore pour l’équipement IT de l’entreprise
Découvrez toutes nos actualités à travers des interviews, avis, conseils d'experts, témoignages clients, ainsi que les dernières tendances et solutions IT autour de nos 4 univers produits : Poste de travail, Affichage et Collaboration, Impression et Infrastructure.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Teams Live Event: Kollective ou Microsoft ECDN ?
- Baromètre de la Transformation digitale 2024 en France
- Le secteur financier reste dans la ligne de mire des cyberattaquants
- CyberPatriot ®, le SOC de dernière génération de CHEOPS TECHNOLOGY
- L’IA comme levier d’évangélisation du COMEX à la cybersécurité