SOAP PHP problème client [Résolu/Fermé]

Signaler
Messages postés
439
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
6 février 2015
-
Messages postés
439
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
6 février 2015
-
Bonjour à tous, j'ai un problème avec un webservice SOAP

Ma page serveur ressemble à ceci :

<?php
class MonWebService
{
function MonWebService()
{
}
/**
* Dis bonjour...
* @param string $qui
* @return string
*/
function hello($qui)
{
return utf8_encode("Bonjour à toi : ".$qui);
}
}


$server = new SoapServer("server.wsdl");
$server->setClass("MonWebService");
$server->handle();

print "Ce web service MonWebService contient les méthodes suivantes :<br><ul>";
$aFuncs = $server->getFunctions();
for($i=0;$i<sizeof($aFuncs);$i++)
{
print("<li>".$aFuncs[$i]."</li>");
}
print "</ul>";
?>

Ma page client :

<?php
// $client = new SoapClient("server.wsdl");
$client = new SoapClient("http://127.0.0.1/VRAI/webservice/server.wsdl", array(
'uri' => 'http://127.0.0.1/VRAI/webservice/index.php',
'location' => 'http://127.0.0.1/VRAI/webservice/index.php',
'trace' => 1,
'wsdl_cache' => 0,
'exceptions' => 0
));


$ret = $client->__call("hello",array('nico'));
echo $ret;

echo $client->__getLastResponse();
?>

Là j'ai rajouté le echo $client->__getLastResponse();
et du coup cela me donne :

SoapFault exception: [Client] looks like we got no XML document in C:\dolibarr\www\VRAI\webservice\test.php:12 Stack trace: #0 C:\dolibarr\www\VRAI\webservice\test.php(12): SoapClient->__call('hello', Array) #1 {main} Bonjour à toi : nico Ce web service MonWebService contient les méthodes suivantes :

* MonWebService
* hello

En revanche si j'enlève cette ligne, cela ne me donne que : SoapFault exception: [Client] looks like we got no XML document in C:\dolibarr\www\VRAI\webservice\test.php:12 Stack trace: #0 C:\dolibarr\www\VRAI\webservice\test.php(12): SoapClient->__call('hello', Array) #1 {main}

Et si j'enlève le trace, sa marche ne fonctionne pas non plus, je suis vraiment perdu là, j'ai l'impression pourtant qu'il y a bien la bonne réponse du serveur au client, mais cela ne marche qu'avec le trace, que faire ?

3 réponses

Messages postés
267
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
29 septembre 2016
77
bonjour,
as tu essayé avec null à la place de "server.wsdl" (src: http://www.manuelphp.com/php/function.soap-soapserver-construct.php )
Messages postés
439
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
6 février 2015
9
Je viens de modifier en mettant null dans le constructeur + l'url de mon wsdl:

$server = new SoapServer(null, array('uri' => "http://127.0.0.1/VRAI/webservice/server.wsdl"));


cela donne toujours ceci :

SoapFault exception: [Client] looks like we got no XML document in C:\dolibarr\www\VRAI\webservice\test.php:12 Stack trace: #0 C:\dolibarr\www\VRAI\webservice\test.php(12): SoapClient->__call('hello', Array) #1 {main}

J'ai essayé avec d'autres constructeurs, même chose !

Messages postés
439
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
6 février 2015
9
C'est bon, j'ai trouvé la soluce !

Alors en fait c'était à cause des print à la fin du fichier server.php

print "Ce web service MonWebService contient les méthodes suivantes :<br><ul>";
$aFuncs = $server->getFunctions();
for($i=0;$i<sizeof($aFuncs);$i++)
{
print("<li>".$aFuncs[$i]."</li>");
}
print "</ul>";

Toute cette partie enlevée, sa marche nikel^^