<?php
// Pour supprimer le cache du web-service
ini_set('soap.wsdl_cache_enabled', 0);
// Nouveau Client SOAP
try {
// Nouvelle instance de la classe soapClient
$client = new SoapClient('http://localhost/LPRO/2016/ex3/Hello.wsdl', array('trace' => 1));
$parm = 'LPRO';
// Appel de la méthode hellotest du service web
try{
$oReturn = $client -> hellotest($parm);
} catch (Exception $e) {
echo 'erreur1'.$e;
}
catch (SoapFault $fault) {
echo "il y a une erreur";
trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR);
}
// affiche le résultat
echo "Resultat : ".$oReturn."<br/>" ;
} catch (SoapFault $fault) {
echo 'erreur : '.$fault;
}
// Affichage des requetes et reponses SOAP (pour debug)
echo '<br />Requete SOAP : '.htmlspecialchars($client->__getLastRequest()).'<br />';
echo '<br />Reponse SOAP : '.htmlspecialchars($client->__getLastResponse()).'<br />';
echo '<br/>'.var_dump($oReturn);
?>
<?php
// Pour supprimer le cache du web-service
ini_set('soap.wsdl_cache_enabled', 0);
// Pour définir le temp maximal d'éxecution de notre web-service
ini_set('default_socket_timeout', 180);
// Nom de notre web-service
class Server {
// Le service QuelJour que l'on a définit dans notre format wsdl
function Jour($parm) {
$aJour[1] = 'Lundi';
$aJour[2] = 'Mardi';
$aJour[3] = 'Mercredi';
$aJour[4] = 'Jeudi';
$aJour[5] = 'Vendredi';
$aJour[6] = 'Samedi';
$aJour[0] = 'Dimanche';
return $aJour[date("w",strtotime($parm))];
}
function hellotest($parm) {
return "Hello ".$parm ;
}
}
// On tente d'instancier la classe soapServer
// Si cela s'avère impossible, on affiche une erreur
try {
$server = new SoapServer('Hello.wsdl', array('trace' => 1,'encoding' => 'ISO-8859-1'));
// On définit la classe qui va gérer les requêtes SOAP (pour nous c'est la class Server)
$server->setclass('Server');
$server->setPersistence(SOAP_PERSISTENCE_REQUEST);
} catch (Exception $e) {
echo 'erreur'.$e;
}
/*
* Gestion des requêtes
*/
// Si l'appel provient d'un Web-Service
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
try {
$server -> handle();}
catch (Exception $e) {
echo 'erreur'.$e;
}
}
// Facultatif seulement pour montrer les fonctions disponibles par le web-service
else {
echo '<strong>This SOAP server can handle following functions : </strong>';
echo '<ul>';
foreach($server -> getFunctions() as $func) {
echo '<li>' , $func , '</li>';
}
echo '</ul>';
}
?>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.example.org/Hello/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Hello" targetNamespace="http://www.example.org/Hello/">
<wsdl:types>
<xsd:schema targetNamespace="http://www.example.org/Hello/">
<xsd:element name="hello">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="in" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="helloResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="out" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="hellotestRequest">
<wsdl:part name="parameters" type="xsd:string"/>
</wsdl:message>
<wsdl:message name="hellotestResponse">
<wsdl:part name="parameters" type="xsd:string"/>
</wsdl:message>
<wsdl:portType name="Hello">
<wsdl:operation name="hellotest">
<wsdl:input message="tns:hellotestRequest"/>
<wsdl:output message="tns:hellotestResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="HelloSOAP" type="tns:Hello">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="hellotest">
<soap:operation soapAction="http://www.example.org/Hello/hellotest"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="Hello">
<wsdl:port binding="tns:HelloSOAP" name="HelloSOAP">
<soap:address location="http://localhost/LPRO/2016/ex3/serveur.php"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>