SOAP PHP problème client
Résolu
Socra!e
Messages postés
443
Date d'inscription
Statut
Membre
Dernière intervention
-
Socra!e Messages postés 443 Date d'inscription Statut Membre Dernière intervention -
Socra!e Messages postés 443 Date d'inscription Statut Membre Dernière intervention -
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 ?
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 ?
A voir également:
- SOAP PHP problème client
- Cybera client - Télécharger - Divers Réseau & Wi-Fi
- Filezilla client - Télécharger - Téléchargement & Transfert
- Easy php - Télécharger - Divers Web & Internet
- Cybera Server - Télécharger - Divers Réseau & Wi-Fi
- Numéro service client orange - Guide
3 réponses
bonjour,
as tu essayé avec null à la place de "server.wsdl" (src: http://www.manuelphp.com/php/function.soap-soapserver-construct.php )
as tu essayé avec null à la place de "server.wsdl" (src: http://www.manuelphp.com/php/function.soap-soapserver-construct.php )
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 !
$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 !
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^^
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^^