avril
2010
Pour créer un WebService facilement en PHP, il faut travailler en PHP5 avec l’extension SOAP d’activée. Pour cela, le mieux est de travailler en local avec Wamp Server (Wamp 5), qui permet d’activer cette extension.
Une fois le matériel prêt, on va commencer par ouvrir notre éditeur de PHP préféré et d’écrire la classe qui être utilisé par le WebService.
Dans notre exemple, on va juste définir une petite classe chargée de faire une opération et une soustraction :
{
public function Add($a, $b)
{
return $a + $b;
}
public function Substract($a, $b)
{
return $a - $b;
}
}
Voilà donc les méthodes qui seront exposées part le WebService.
Il ne reste plus qu’à créer le serveur et la partie PHP sera terminée.
Pour cela, nous allons utiliser la classe SoapServer :
// première étape : désactiver le cache wsdl lors de la phase de test
ini_set("soap.wsdl_cache_enabled", "0");
$wsdl = 'WebService.wsdl';
//Création du serveur SOAP avec le fichier WSDL
$server = new SoapServer($wsdl);
//Ajout de la classe Math dans les éléments proposés par le WebService
$server->setClass('Math');
//l'utilisation du WebService se fera toujours par la méthode POST
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$server->handle();
}
else //dans le cas contraire, la page affichera les méthodes proposées par le WebService
{
echo '<h4>Ce serveur SOAP peut gérer les fonctions suivantes : </h4><ul>';
$functions = $server->getFunctions();
foreach($functions as $func)
echo '<li>'.$func.'</li>';
echo '</ul>';
}
Vous avez sûrement remarqué qu’on fait appel au fichier WebService.wsdl alors qu’on ne l’a pas encore créé. On va donc s’en charger maintenant. Le mieux pour cela est d’utiliser un logiciel qui va générer le fichier wsdl finale grâce à des informations qu’on lui aura apporté. Pour ma part j’utilise Altova XML Spy qui est disponible gratuitement en version d’essai.
Voilà donc ce que ça donne en version graphique :
La partie serveur est à présent terminée, attaquons nous au client .net en C#.
L’utilisation de Visual Studio 2008 est conseillé, il permet la génération automatique d’un proxy grâce a WCF à partir du fichier WSDL.
On va commencer par créer une application console. Ensuite, il suffit d’ajouter une un Service Reference en passant en adresse celle du fichier WSDL (http://localhost/WebServices/WebService.wsdl dans notre cas) et Math comme namespace pour la référence.
WCF a alors généré la classe MathServiceClient ainsi qu’un fichier de configuration qui vont nous servir à intéragir avec le WebService.
On va instancier cette classe :
MathServiceClient math = new MathServiceClient();
Puis on va simplement appeler nos deux méthodes :
Console.WriteLine(math.Substract(10, 5));
Et bien sûr, il ne faut pas oublier de fermer le client :
math.Close();
Et voilà, notre client .net consomme notre WebService PHP !
Les sources de cet article sont disponibles ici.
Il suffit d’aller voir dans le forum PHP
comment sécuriser le web service ,svp ?