Médiaforma

All posts tagged service web

Pour consommer le service, vous devez maintenant écrire un client en instanciant un objet SoapClient. Voici le code utilisé :

<?php
  try
  {
    echo "Le Webservice donne l'heure ";
     $clientSOAP = new SoapClient( null,
       array (
         'uri' => 'http://localhost/',
         'location' => 'http://localhost/POO/horloge.class.php',
         'trace' => 1,
         'exceptions' => 1
       ));
    $ret = $clientSOAP->__soapCall('heure', array());
    echo $ret;
  }
  catch(SoapFault $f)
  {
    echo $f;
  }
?>

La syntaxe de l’instanciation d’un objet SoapClient se trouve ici : http://php.net/manual/en/soapclient.soapclient.php.

Il ne reste plus qu’à appeler la méthode heure() de l’objet $clientSOAP :

$ret = $clientSOAP->__soapCall('heure', array());

Consultez la page http://www.php.net/manual/en/soapclient.soapcall.php pour en savoir plus sur cette méthode.

Le résultat retourné par la méthode est enfin affiché :

echo $ret;

Exécutons ce code dans WAMP Server.

L’heure UTC est immédiatement affichée. Quelques secondes plus tard, vous pouvez appuyer sur la touche F5 pour mettre à jour na page et afficher à nouveau l’heure.


Nous allons créer un service Web ultra simple qui retourne l’heure UTC.

Dans un premier temps, nous définissons la classe horloge qui contient une seule méthode publique nommée heure(). Cette méthode retourne l’heure au format UTC, en utilisant la fonction date() :

<?php
  class horloge{
    public function heure(){
      return date("e H:i:s");
    }
  }

Le service Web va reposer sur la classe horloge. Pour le mettre en place, quelques instructions PHP suffisent :

try
{
  $server = new SoapServer(null, array('uri' => 'http://localhost/POO/horloge.class.php'));
  $server->setClass("horloge");
  $server->handle();
}
catch(Exception $e)
{
  echo "Exception: " . $e;
}
?>

Dans un premier temps, l’objet SoapServer $server est créé, en précisant l’adresse URI du service :

$server = new SoapServer(null, array(‘uri’ => ‘http://localhost/POO/horloge.class.php’));

La syntaxe de l’instanciation d’un l’objet SoapServer se trouve ici : http://www.php.net/manual/en/soapserver.soapserver.php.

Cinq syntaxes sont possibles. Les quatre premières utilisent un fichier WSDL (Web Service Description Language). La cinquième syntaxe n’utilise pas de fichier WSDL. Elle pointe vers l’URI de la classe utilisée pour définir le service Web. Nous utiliserons cette syntaxe. Ici, la classe est stockée dans le fichier horloge.class.php, qui se trouve dans le dossier POO du serveur Web local.

L’instruction suivante indique au serveur le nom de la classe qui gère les requêtes SOAP :

$server->setClass("horloge");

Enfin, la dernière instruction s’occupe de toutes les tâches nécessaires pour gérer les requêtes SOAP :

$server->handle();

L’instanciation de l’objet SoapServer se fait à l’intérieur d’une instruction try. Si une erreur se produit, elle est capturée par l’instruction catch et affichée sur l’écran avec une instruction echo :

  catch(Exception $e)
  {
    echo "Exception: " . $e;
  }

Le service est entièrement défini. Sauvegardez-le sous le nom horloge.class.php et sauvegardez-le dans le dossier c:\wamp\www\POO\.


Le langage PHP permet de créer des services Web.

Mais au fait, savez-vous ce qu’est un service Web ? Il s’agit d’un programme libre d’accès, qui s’exécute sur un serveur Web, et qui permet d’échanger des données avec le client qui l’interroge.

Remarque

Pour être en mesure de créer et d’utiliser des services Web sur votre serveur local WAMPServer, vous devez activer l’extension SOAP. Cliquez sur l’icône de WAMPServer dans la zone de notifications, pointez PHP, Extensions PHP et assurez-vous qu’une coche est affichée devant php_soap. Dans le cas contraire :

  1. Fermez WAMPServer.

  2. Editez le fichier \wamp\bin\apache\Apache2.4.4\bin\php.ini.

  3. Recherchez du terme “soap” et supprimez le “;” devant la ligne ;extension=php_soap.dll.

  4. Redémarrez WAMPServer.