TUTORIELS 
Utiliser un contrat WSDL avec NuSOAP
Le contrat WSDL permet au programme utilisateur d'un service de connaître toutes les propriétés de ce dernier sans intervention humaine. Illustration avec PHP.  ( 8 avril 2003)
 

Nous avions créé dans un article précédent notre propre service Web élémentaire en PHP à l'aide de la bibliothèque NuSOAP. Parce que les fonctions WSDL de NuSOAP ne sont pas encore toutes fonctionnelles (notamment configureWSDL(), qui nous permettrait de générer automatiquement le document WSDL relatif à notre service), celui-ci n'est réellement utilisable que par des requêtes NuSOAP.
Nous allons en revanche voir ici comment utiliser des services disposants de contrats WSDL au sein de nos pages PHP, à l'aide de NuSOAP.
Nous verrons dans un prochain article comme générer automatiquement un contrat WSDL pour un service Web construit avec NuSOAP.

Description d'un contrat WSDL
Le Web Service Description Language, comme son nom l'indique, est un "vocabulaire" XML utilisé pour décrire les possibilités d'un service Web. Il permet de faire le lien entre le service créé et l'UDDI (Universal Description, Discovery and Integration), le "répertoire" de tous les services Web disponibles publiquement. WSDL représente ainsi une manière standard de documenter les requêtes qu'un service accepte et les réponses qu'il peut donner.
On peut créer un document WSDL à la main (comme tout document XML), mais cela devient vite fastidieux. Il existe des outils permettant d'automatiser ce processus, comme OmniOpera ou CapeClear Studio.

Appeler un service
Prenons l'un des nombreux services disponibles sur le site de référence xMethods: ici, nous choisissons le service Babelfish, qui nous permettra d'envoyer en requête une phrase ou un mot en français, et de recevoir en réponse sa traduction anglaise.

Voici le code que nous utilisons:

(fichier traduc.php)
<?php
include('nusoap.php');
$wsdl = "http://www.xmethods.net/sd/2001/BabelFishService.wsdl";
$client = new soapclient($wsdl, 'wsdl');
$parametres = array(
  'translationmode' => 'fr_en',
  'sourcedata' => 'Ceci est un test'
  );
?>
<?=$client->call('BabelFish', $parametres);?>

Principales différences avec notre appel pour notre service "Hello" (voir l'article): l'URL du service est maintenant le fichier WSDL qui le défini (et non plus le service lui-même; l'URL du service est définie dans le document WSDL), et l'apparition de l'argument wsdl dans l'instanciation de la classe soapclient.
Les paramètres ne sont ensuite qu'adaptés du mode d'emploi de ce service.

 
[ Xavier Borderie,JDNet
 
Accueil | Haut de page