TUTORIELS 
Créer son propre service Web avec PHP et NuSOAP
NuSOAP permet de construire rapidement et simplement des services Web fonctionnels en PHP, permettant ainsi de proposer son contenu à d'autres sites.  (24 mars 2003)
 

Déjà abordée lors de nos articles sur les API Google et Amazon, la bibliothèque NuSOAP ne permet pas seulement de se connecter à un service Web, mais aussi d'en créer un sur son propre serveur. C'est que nous allons voir dans cet article...

Hello world
Pour apprécier la simplicité de création d'un service Web à l'aide de NuSOAP, nous allons créer un petit service qui ne fait que renvoyer la chaîne "bonjour <prénom>!" quand on l'appelle:

(fichier hello-service.php)
<?php
include('nusoap.php');

$serveur = new soap_server;
$serveur->register('bonjour');

function bonjour($prenom)
  {
  return "Bonjour $prenom!";
  }

$serveur->service($HTTP_RAW_POST_DATA);
?>

Pour appeler ce service, nous procédons de la même manière que pour les API Google ou Amazon:

(fichier hello-appel.php)
<?php
include('nusoap.php');
$client = new soapclient('http://monsite.fr/hello-service.php');
$parametres = array('prenom'=>'Xavier');
?>
<?=$client->call('bonjour', $parametres);?>

(NB: si vous comptez tester le script d'appel en local, n'oubliez pas que l'URL du fichier doit être de la forme "http://localhost/monDossier/hello-service.php")

Explications: nous avons fait appel à une classe de la bibliothèque NuSOAP spécialement conçue pour créer un serveur SOAP: soap_server. Après avoir instancié cette classe sous le nom de $serveur, nous pouvons sans problème utiliser ses fonctions pour créer notre service.
Tout d'abord, il nous faut enregistrer le nom de notre service: c'est la fonction register() qui s'en charge.
Une fois le nom de notre service enregistré, nous pouvons construire le service lui-même sous la forme d'une fonction portant simplement le même nom que le service, et acceptant en argument les variables passées par le client (ici, le prénom à afficher). Cette fonction renverra l'information souhaitée: nous construisons un simple return renvoyant la chaîne à afficher.
Il ne reste plus, enfin, qu'à lancer la requête SOAP et à envoyer la réponse: c'est le rôle de la fonction service(). $HTTP_RAW_POST_DATA est la valeur habituellement donnée en argument.

Variation
Le service que nous venons de créer peut être facilement modifier pour renvoyer une information donnée selon les arguments, envoyer des images...

(fichier meteo-service.php)
<?php
include('nusoap.php');
$serveur = new soap_server;
$serveur->register('meteo');

function meteo($req)
  {
  switch ($req)
    {
    case "imgTempsDemain":
      return "<img src=http://site.fr/meteo/tempsD.gif>";
      break;
    case "imgTemperatureDemain":
      return "<img src=http://site.fr/meteo/temperaD.gif>";
      break;
    case "txtDemain"
      return "Le temps reste calme et le soleil prédominant mais le ciel devient moins limpide à partir du nord.";
      break;
    default: return "Requête inconnue";
    }
  }
$serveur->service($HTTP_RAW_POST_DATA);
?>

A vous de construire un service autour des informations offertes par votre site...

 
[ Xavier Borderie,JDNet
 
Accueil | Haut de page