« Programmation PHP/Exemples/Webservice » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 64 :
 
Nous avons vu dans cet exemple comment retourner une chaine de caractère, un exemple assez simple. Il est aussi possible de renvoyer des tableaux grâce aux methodes lorsqu'on souhaite extraire des éléments d'une base de données.
 
=Webservice PHP5=
== WSDL ==
<source lang="xml">
<?xml version="1.0"?>
<!-- partie 1 : Definitions -->
<definitions name="HelloYou"
targetNamespace="urn:HelloYou"
xmlns:typens="urn:HelloYou"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<!-- partie 2 : Types-->
<types>
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:HelloYou">
</xsd:schema>
</types>
<!-- partie 3 : Message -->
<message name="getHelloRequest">
<part name="prenom" type="xsd:string"/>
<part name="nom" type="xsd:string"/>
</message>
<message name="getHelloResponse">
<part name="return" type="xsd:string"/>
</message>
<!-- partie 4 : Port Type -->
<portType name="HelloYouPort">
<!-- partie 5 : Operation -->
<operation name="getHello">
<input message="typens:getHelloRequest"/>
<output message="typens:getHelloResponse"/>
</operation>
</portType>
 
<!-- partie 6 : Binding -->
<binding name="HelloYouBinding" type="typens:HelloYouPort">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getHello">
<soap:operation soapAction="HelloYouAction"/>
<input name="getHelloRequest">
<soap:body use="encoded"
namespace="urn:HelloYou"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output name="getHelloResponse">
<soap:body use="encoded"
namespace="urn:HelloYou"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
 
<!-- partie 7 : Service -->
<service name="HelloYouService">
<documentation>Retourne une phrase simple </documentation>
<!-- partie 8 : Port -->
<port name="HelloYouPort" binding="typens:HelloYouBinding">
<soap:address location="http://soap.minimonde.org/HelloYou.Server.php5"/>
</port>
</service>
</definitions>
</source>
 
== SERVER ==
<source lang="php">
<?php
 
// première étape : désactiver le cache lors de la phase de test
ini_set("soap.wsdl_cache_enabled", "0");
 
// on indique au serveur à quel fichier de description il est lié
$serveurSOAP = new SoapServer('HelloYou.wsdl');
 
// ajouter la fonction getHello au serveur
$serveurSOAP->addFunction('getHello');
 
// lancer le serveur
if ($_SERVER['REQUEST_METHOD'] == 'POST')
 
{
$serveurSOAP->handle();
}
else
{
echo 'désolé, je ne comprends pas les requêtes GET, veuillez seulement utiliser POST';
}
 
function getHello($prenom, $nom)
{
return 'Hello ' . $prenom . ' ' . $nom;
}
?>
</source>
 
== CLIENT ==
<source lang="php">
<?php
 
// première étape : désactiver le cache lors de la phase de test
ini_set("soap.wsdl_cache_enabled", "0");
 
// lier le client au fichier WSDL
$clientSOAP = new SoapClient('HelloYou.wsdl'));
 
// executer la methode getHello
echo $clientSOAP->getHello('Marc','Assin');
 
?>
</source>
 
=Conclusion=