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...
|