Main Contents

Créer un Webservice en PHP avec NuSoap

novembre 7, 2008

Allez un petit tuto en PHP. Cette fois sur les webservices. On va créer un serveur et un client. PHP5 possède ses propres fonctions pour ca, ici on va utiliser la classe NuSoap que je trouve pratique et simple. Récupérable ici.

I) Le serveur

<?
include('lib/nusoap.php');
$serveur = new soap_server;
$serveur->register('bonjour');
function bonjour($prenom)
{
return "Bonjour ".$prenom;
}
$serveur->service($HTTP_RAW_POST_DATA);
?>

Ligne 3 : on créer une instance de serveur
Ligne 4 : on enregistre une méthode « bonjour »
Ligne 5 : on défini la méthode « bonjour », cela retourne un texte avec la variable passée.
Ligne 9 : on envoie le résultat.

II) Le client

<?php
require_once('lib/nusoap.php');
$serverpath ='http://url-de-ma-page-serveur';
$param = array('prenom'=>'Jerome');
$client = new soapclient($serverpath);
$result = $client->call('bonjour', $param);
print($client->request);
?>

Ligne 3 : l’url du serveur
Ligne 4 : le tableau des paramètres à passer
Ligne 5 : on créé le client
Ligne 6 : l’appelle à la fonction ‘bonjour’ et les paramètres.
Ligne 7 : on affiche le resultat.

C’est un exemple d’utilisation simple. Il est possible de passer un message soap précis, de forcer le nommage dans le xml etc…
Ca sera pour un prochain tuto 🙂

Autre tuto : http://www.jkraft.fr/2010/11/05/php-retourner-un-tableau-avec-nusoap/

Catégorie(s): Développement, Php, Tutorial | Comments (5)

5 Comments

  1. rio (2 comments) mars 25, 2009 @ 14 h 47 min

    j’ai résolu le problème de ton code
    il te manque l’initialisation de fichier WSDl dans ton serveur.php
    ca doit etre comme ca :

    I)Le serveur

    configureWSDL(‘Appelwsdl’, ‘urn:Appelwsdl’);
    $server->register(‘bonjour’, // nom methode
    array(‘prenom’ => ‘xsd:string’,
    ‘file’ => ‘xsd:string’,
    ‘language’ => ‘xsd:string’), // input parameters
    array(‘return’ => ‘xsd:string’), // output parameters
    ‘urn:bonjour’, // namespace
    ‘urn:bonjourwsdl#’, // soapaction
    ‘rpc’, // style
    ‘encoded’, // use
    « documentation » // documentation
    );
    function bonjour($prenom)
    { return « bonjour ».$prenom;
    }
    $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA :  »;
    $server->service($HTTP_RAW_POST_DATA);
    ?>

    ca diminue la casse tête des autres internautes

    daoud hamdi
    cordialement,

  2. rio (2 comments) mars 25, 2009 @ 14 h 50 min

    configureWSDL(‘Appelwsdl’, ‘urn:Appelwsdl’);
    $server->register(‘bonjour’, // method name
    array(‘prenom’ => ‘xsd:string’,
    ‘file’ => ‘xsd:string’,
    ‘language’ => ‘xsd:string’), // input parameters
    array(‘return’ => ‘xsd:string’), // output parameters
    ‘urn:bonjour’, // namespace
    ‘urn:bonjourwsdl#’, // soapaction
    ‘rpc’, // style
    ‘encoded’, // use
    « documentation » // documentation
    );
    function bonjour($prenom)
    {return « bonjour ».$prenom;
    }
    $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA :  »;
    $server->service($HTTP_RAW_POST_DATA);
    ?>

  3. Mowgli (1 comments) avril 19, 2011 @ 16 h 05 min

    tt dabord je tiens a feliciter le ou les concepteurs du site, je le trouve tres a jour concernant les nvelles tech.
    Ensuite jai un probleme avec les 2 codes proposés lors de ce tutoriel
    le 1er proposé par jerome kraft il ne fonctionne pas malheureusement a cause de labsence du .wsdl
    ca sera tres aimable a vous que vous de presenter une version code avec wsdl(entre nous je suis BLOQUé dans mon pfe ca fait d jours et les sw en php sont un passage obligé)

    le second concernant daoud hamdi jai cru comprendre que vous essayez de palier au probleme absence .wsdl mais hélas ca ne marche pas non plus

    je vous laisse ma boite mail biibarse@hotmail.com a l’aiiiiide!!!
    toute personne capable de maider a faire marcher un service web en php avec nusoap est INVITé a me contacter! merci davance

  4. overdoze (1 comments) février 24, 2012 @ 9 h 50 min

    bonjour
    merci pour ce toto, j’ai essayé de le suivre mais j’ai pas réussi.
    d’après ce que j’ai lu il faut aussi un appel du fichier WSDL.
    voici comment j’ai fait:
    -j’ai créer un fichier nommé servuer.php et j’ai coller le code serveur
    -fichier client.php et j’ai coller le code client dedans
    => tous les 2 fichiers sont dans le même répertoire et j’ai mis ça $serverpath =’http://localhost/webservice/serveur.php’; (sachant que j’utilise WAMPSERVER) et je test en local

  5. JJDai (1 comments) septembre 5, 2012 @ 8 h 45 min

    Bonjour
    Le code des exemples fonctionne très bien même sans wsdl à condition de corriger la ligne
    $client = new soapclient($serverpath);
    Il manque un « _ », ça devrait être:
    $client = new soap_client($serverpath);

    Cet exemple m’a bien aidé pour débuter les webservice, merci.
    JJDai

Leave a comment