Passer au contenu

Utilisez des services web avec PHP

La couche Soap (Simple object access protocol) de PHP est désormais arrivée à maturité. Plusieurs implémentations (PEAR, NuSoap, etc.) disposent des fonctions nécessaires pour assembler et exposer facilement des services Web en quelques lignes de code seulement.

Les technologies des services web, Soap et ses acolytes, agrègent des services provenant du monde entier pour construire des applications, sans se soucier de la technologie sous-jacente du composant utilisé. Cette mise en ?”uvre explique comment assembler quatre services web afin de concevoir une page d’informations relatives aux entreprises cotées à Wall Street. Le premier service web fournira le cours de l’action, le deuxième indiquera la parité entre le dollar et l’euro ; le troisième présentera les liens issus du moteur de recherche Google se rapportant à l’entreprise ; le dernier, enfin, cherchera les ouvrages publiés sur amazon.com. Si l’on exclut les problématiques de présentation des informations, l’appel de chaque service nécessitera moins de cinq lignes de code. La procédure s’appuie sur la classe “nusoap.php”, développée par Dietrich Ayala, qui génère les proxies Soap à partir des contrats WSDL des services web appelés.

1. Installez NuSoap et le toolkit Amazon

Récupérez les classes fournies par Dietrich Ayala et Amazon, puis installez-les. Pour cela, téléchargez la dernière version de NuSoap sur le site http://dietrich.ganx4.com/nusoap/. Vous pouvez également consulter le CVS sur http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/nusoap/lib/. Créez un sous-répertoire “Clients” dans lequel vous stockerez tous les fichiers. Connectez-vous ensuite sur Amazon ( amazon.com/webservices) et téléchargez la dernière version du toolkit. Décompressez le contenu du répertoire “PHP Sample” dans votre sous-répertoire “Clients “. Il ne vous reste plus qu’à obtenir une clé de développement. Gratuite, celle-ci sert à accéder aux API Soap et XML d’Amazon. Une fois le formulaire complété, Amazon vous fournit une clé, que vous devez copier à la ligne 27 du fichier “Clients/AmazonSearch.php”, dans la variable “$Token”. Il convient également de vous inscrire au service de Google, à l’adresse google.com/apis/. Télécharger le toolkit du moteur de recherche, dans lequel vous trouverez le contrat WSDL nécessaire au paramétrage de l’appel. Google vous envoie ensuite par mail un numéro d’identification, vous autorisant à effectuer mille requêtes par jour sur le moteur.

2. Créez le client du premier service

Le contrat WSDL du premier service (cours de Bourse) est disponible sur XMethods à l’adresse http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl. Il vous signale que la méthode à appeler s’intitule “GetQuote” (voir code A) et qu’il faut lui passer un paramètre “Symbol” de type string. Il s’agit du ticker employé pour désigner une action à la Bourse de Wall Street. Armé de ces paramètres, concevez le premier client qui consommera le service de XMethods.Indiquez à PHP que vous souhaitez utiliser les classes contenues dans “nusoap.php”. Insérez ensuite cette classe à l’aide de l’instruction “require_once()” et créez une variable “$parant” de type tableau. Puis, à l’aide de la syntaxe “$params = array(‘symbol’=> $ticker);”, précisez que la valeur du paramètre “Symbol” est la variable “$ticker”. Connectez-vous alors au service et appelez la méthode “GetQuote”. La connexion au service s’effectue en créant une nouvelle instance de la classe “soapclient” et en lui passant l’adresse du contrat WSDL. Enfin, invoquez la méthode à l’aide de l’instruction “call()”, passez-lui les paramètres contenus dans le tableau “$parant”, puis stockez le résultat de l’appel dans la variable “$result”. Empaquetez alors votre développement dans une fonction “GetStock()”, plus aisée à manipuler par la suite.

3. Concevez le client du deuxième service

Disponible à l’adresse xmethods.net/sd/2001/CurrencyExchangeService.wsdl, le contrat relatif à ce service fournit un taux de conversion entre le dollar et l’euro (voir code B). Sa méthode s’intitule “GetRate” et il faut lui passer deux paramètres de type string : la zone monétaire d’origine (dollar US) et la zone monétaire cible (euro). Le code est identique à celui du premier service. Seuls les paramètres changent. Empaquetez ce client dans la fonction “GetRate”.

4. Appelez le service de Google

La démarche pour appeler le service de Google est pratiquement identique, mais le nombre de paramètres se révèle plus important et les données retournées par le moteur de recherche nécessitent un minimum de mise en page. Pour obtenir le détail de chaque paramètre, reportez-vous au fichier “APIs_reference.html”, situé à la racine de l’archive du Ressource kit. Paramètre le plus important, “‘key'” sert à vous identifier grâce à la clé reçue par e-mail. Invoquez la méthode “DoGoogleSearch”, référencée dans le contrat fourni avec le Ressource kit. Pour changer, appelez le “endpoint” du service (son port d’écoute Soap), sans passer par le contrat WSDL. Son adresse est http://api.google.com/search/beta2. Pour cette approche, vous devez identifier le service par son URN puis le passer à la classe “soapclient “. Dans notre mise en ?”uvre, il s’agit de “GoogleSearch”. Le moteur de recherche affiche un tableau de tableaux. Les données qui vous intéressent figurent dans le tableau “ressourcements”, affichable à l’aide d’une boucle “foreach”. Enfin, empaquetez votre développement dans la fonction “GetGoogle()”.

5. Recherchez un ouvrage sur Amazon

L’appel du service d’Amazon constitue une tâche encore plus simple, le site fournissant son propre client Soap pour accélérer les développements. S’appuyant sur NuSoap, “AmazonSearch.php” propose la classe “AmazonSearch” afin de récupérer toutes les informations sur un livre selon un mot clé (voir code C). Indiquez à PHP que vous souhaitez utiliser “AmazonSearch.php” à l’aide de l’instruction “require_once()”,saisissez les instances de la classe “AmazonSearch”, puis appelez la méthode “DoKeywordSearch” en lui passant le paramètre “$ticker”. Enfin, mettez en forme les résultats à l’aide d’une boucle “foreach” adaptée. Attention à la casse des noms de variable, celle-ci se révèle importante. Afin d’atteindre les données qui vous intéressent, descendez l’arborescence comme suit : “$item [‘Details’][‘ProductName’]”. Empaquetez ce code dans la fonction ” Get-Amazon “.

6. Assemblez les différents appels de service

Une fois tous les clients créés, stockez-les dans une librairie que vous baptiserez “client soap.php” et rangerez dans le sous-répertoire “Clients”. Maintenant, appelez les services. Pour cela, créez un fichier “index.php” et activez “clientsoap.php” à l’aide d’un “include”. Invoquez ensuite “GetStock()” et “GetRate()”, puis multipliez le cours de l’action par le taux de conversion. Appelez enfin “GetGoogle()” et “GetAmazon()” en leur passant le mot clé “$ticker”. Le tour est joué.

🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.


Frédéric Bordage