PHP soap/client [Résolu/Fermé]

Signaler
Messages postés
275
Date d'inscription
lundi 27 janvier 2014
Statut
Membre
Dernière intervention
25 avril 2019
-
Messages postés
275
Date d'inscription
lundi 27 janvier 2014
Statut
Membre
Dernière intervention
25 avril 2019
-
Bonjour , j'ai un probleme sur mes fichiers PHP/SOAP

https://www.cjoint.com/c/DEzlYsUYOGl

je sait que cela est liée a un probleme , mais je ne sait pas ou ? dans le wsdl ? dans le code PHP ? j'ai aucune idée , je suis completement bloqué :/

plus rien ne s'affiche correctement , alors que cela marchais auparavant

Merci :D

8 réponses

Messages postés
92
Date d'inscription
mercredi 21 mai 2014
Statut
Membre
Dernière intervention
15 juin 2014
16
Pouet !

Fournir les messages d'erreur, ça peut aider (au lieu de fournir une Url) !....
FATAL Error : Uncaught Soap Exception : [Client] looks like we got no XML document

En ligne 5 du fichier accueil.inc.php... il attend un fichier XML, ce qu'il ne semble pas recevoir...

Peut etre un élement de réponse plus détaillé ici :
https://stackoverflow.com/questions/2540438/how-to-get-rid-of-uncaught-soapfault-exception-client-looks-like-we-got-no-x

Note : Windows / Wamp pour de la prod => Beurk (c'est peut être pas très objectif, pardon) !
Messages postés
275
Date d'inscription
lundi 27 janvier 2014
Statut
Membre
Dernière intervention
25 avril 2019
14
enfait j'ai pas trop le choix , j'ai toujours appris comme ca , je vais pas changé maintenant de logiciel et tout c'est pour un projet PPE

un projet en cours , que je dois rendre ^^ , on a appris avec Windows / Wamp , tant pis pour le beurk x')

le screnn est assez parlant , pardon x') , il attends un XML , donc mon fichier WSDL , dis moi les fichiers que je pourrais te fournir pour m'aidez stp ^^
Messages postés
92
Date d'inscription
mercredi 21 mai 2014
Statut
Membre
Dernière intervention
15 juin 2014
16
Oui, oui désolé, j'ai dit tout haut ce que je pensais tout bas !... On est bien d'accord qu'une solution LAMP ne va pas régler ton problème...

Je ne sais pas ce que veux dire PPE (Prime pour l'Emploi ) ?!

Dans le lien fournit on a (traduit via Google Translate) :

Il semble que votre client reçoit du XML invalide - soit le WSDL lui-même ou la réponse renvoyée par le serveur. Essayez d'appeler le client avec l'option de trace défini à TRUE et vérifiez l'envoi XML réel / reçues via le __ getLastRequest () et __ getLastResponse () méthodes.

As-tu essayé !?

The server SOAP file in php has encode utf8 with BOM, causing apache send back the BOM mark (3 bytes) before the xml response.

As-tu vérifié qu'il n'y avait pas de BOM ?

Bref... vérifie les données envoyées et recues pour t'assurer que c'est bien du XML au sens strict du terme... Pour vérifier tu peux par exemple enregistrer ton fichier sur ton ordi local, et demander à firefox ou chrome d'afficher le fichier... Il va te le dire normalement si c'est pas valide...
Messages postés
275
Date d'inscription
lundi 27 janvier 2014
Statut
Membre
Dernière intervention
25 avril 2019
14
Oula , alors PPE ( Projet Pluridisciplinaire encadrée ) sauf que je passe un oral , et je suis sensé la terminé , mais XML / SOAP , me met des batons dans les roues :D

Essayez d'appeler le client avec l'option de trace défini à TRUE et vérifiez l'envoi XML réel / reçues via le __ getLastRequest () et __ getLastResponse () méthodes.

Sur FireFox , j'ai SOA Client ( est ce que c'est de ca que tu parle ? )

BOM , c'est quoi ? x') j'ai jamais entendu parler
Messages postés
275
Date d'inscription
lundi 27 janvier 2014
Statut
Membre
Dernière intervention
25 avril 2019
14
//Fichier : accueil.inc.php

<?php 

include_once('service/donnees/wsdl.cfg.php');
$clientSoap = new SoapClient(WSDL);
$listeObjEmploye = $clientSoap->listerEmployes();

?>

[...]


//Fichier : wsdl.cfg.php

<?php

define("WSDL", "http://localhost/PPE3/service/donnees/ppe3.wsdl");

?>


Le fichier XML est ici ( il fait 1500 Lignes )

http://cjoint.com/14mi/DEznZRymHx4.htm
Messages postés
92
Date d'inscription
mercredi 21 mai 2014
Statut
Membre
Dernière intervention
15 juin 2014
16
Question bete la ligne 5 chez toi, c'est la ligne : $listeObjEmploye = $clientSoap->listerEmployes(); ?

BOM : 3 caractères situés en début de fichier, permettant de lever le doute sur le charset utilisé ensuite dans le reste du fichier... En général ca se voit quand on ouvre le fichier dans un logiciel texte...
cf : https://fr.wikipedia.org/wiki/Byte_Order_Mark
Messages postés
275
Date d'inscription
lundi 27 janvier 2014
Statut
Membre
Dernière intervention
25 avril 2019
14
Oui , c'est la ligne 5 chez moi 5| $listeObjEmploye = $clientSoap->listerEmployes();

BOM , je conaissait pas O_O

et pourquoi cela serais un probleme de l'avoir a la ligne 5 ?? O_O

desolé , c'est un code qui date de la prehistoire ( beaucoup de gens nous ( a ma classe et moi ) le disent) mais c'est clair , concis et ca marche , que demander de plus :D
Messages postés
92
Date d'inscription
mercredi 21 mai 2014
Statut
Membre
Dernière intervention
15 juin 2014
16
Ton WSDL semble valide... La réponse du service ne l'est peut être pas... C'est fort probable si "listerEmployes" est en ligne 5 !

Si c'est le cas... ajouter dans le fichier à la suite (attention faut que l'utilisateur puisse écrire dans le répertoire... :
$clientSoap = new SoapClient( 'http://localhost/PPE3/service/donnees/ppe3.wsdl', array('trace'=>1) );
$listeObjEmploye = $clientSoap->listerEmployes();
file_put_contents( 'soap_request.xml', $clientSoap->__getLastRequest() );
file_put_contents( 'soap_response.xml', $clientSoap->__getLastResponse() );


Recharger la page fautive, et vérifier que les fichiers soap_request.xml et soap_response.xml sont bien valides... dans les pires des cas faire un copier-coller...

Comprends-tu au moins ce que tu fais, et comment fonctionne SOAP ?
Messages postés
275
Date d'inscription
lundi 27 janvier 2014
Statut
Membre
Dernière intervention
25 avril 2019
14
pas tout a fait , si tu veux reelement mon avis x')
pour moi ; le PHP --> Gestion/Passerelle --> BBD , est bien meilleur x')

EDIT :

toujours la meme erreur , aucun changement , par rapport au scrennshoot


Fatal error: Uncaught SoapFault exception: [Client] looks like we got no XML document in C:\wamp\www\PPE3\include\accueil.inc.php:5 Stack trace: #0 C:\wamp\www\PPE3\include\accueil.inc.php(5): SoapClient->__call('listerEmployes', Array) #1 C:\wamp\www\PPE3\include\accueil.inc.php(5): SoapClient->listerEmployes() #2 C:\wamp\www\PPE3\index.php(70): include('C:\wamp\www\PPE...') #3 {main} thrown in C:\wamp\www\PPE3\include\accueil.inc.php on line 5
Messages postés
92
Date d'inscription
mercredi 21 mai 2014
Statut
Membre
Dernière intervention
15 juin 2014
16
Ah ok, c'est de ma faute... Il faut intercepter l'exception... Sinon le code s'arrête !...
Messages postés
275
Date d'inscription
lundi 27 janvier 2014
Statut
Membre
Dernière intervention
25 avril 2019
14
On dirait qu'il ne trouve pas le fichier SOAP ( XML ) WSDL , pourant les chemins sont bons , je saisit rien la , cela marchais avant que je change de version 64bits --> 32Bits , pour cause , les extentions que j'avais sur le 64Bits ne marchais pas , et n'etais que compatible avec la version 32Bits
Messages postés
92
Date d'inscription
mercredi 21 mai 2014
Statut
Membre
Dernière intervention
15 juin 2014
16
$clientSoap = new SoapClient( 'http://localhost/PPE3/service/donnees/ppe3.wsdl', array('trace'=>1) );
try {
    $listeObjEmploye = $clientSoap->listerEmployes();
} catch( Exception $Ex )
{
        var_dump( $Ex );
        echo "Request :<br>", htmlentities($clientSoap->__getLastRequest()), "<br>";
        echo "Response :<br>", htmlentities($clientSoap->__getLastResponse()), "<br>";
}


(Je n'invente rien : https://www.php.net/manual/en/soapclient.getlastresponse.php )
Messages postés
275
Date d'inscription
lundi 27 janvier 2014
Statut
Membre
Dernière intervention
25 avril 2019
14
Ton code est clair , j'obtient qqch qui me parle

un array , avec pleins de valeur ^^


Galaxy Swiss Bourdin

La Realité depasse la fiction

Tel: 0123456789 | Mail: exemple.exemple@

Employée
Activite »
Budget »
AUTRES »

object(SoapFault)[2]
protected 'message' => string 'looks like we got no XML document' (length=33)
private 'string' (Exception) => string '' (length=0)
protected 'code' => int 0
protected 'file' => string 'C:\wamp\www\PPE3\include\accueil.inc.php' (length=40)
protected 'line' => int 7
private 'trace' (Exception) =>
array
0 =>
array
'file' => string 'C:\wamp\www\PPE3\include\accueil.inc.php' (length=40)
'line' => int 7
'function' => string '__call' (length=6)
'class' => string 'SoapClient' (length=10)
'type' => string '->' (length=2)
'args' =>
array
...
1 =>
array
'file' => string 'C:\wamp\www\PPE3\include\accueil.inc.php' (length=40)
'line' => int 7
'function' => string 'listerEmployes' (length=14)
'class' => string 'SoapClient' (length=10)
'type' => string '->' (length=2)
'args' =>
array
...
2 =>
array
'file' => string 'C:\wamp\www\PPE3\index.php' (length=26)
'line' => int 70
'args' =>
array
...
'function' => string 'include' (length=7)
private 'previous' (Exception) => null
public 'faultstring' => string 'looks like we got no XML document' (length=33)
public 'faultcode' => string 'Client' (length=6)
public 'faultcodens' => string 'http://schemas.xmlsoap.org/soap/envelope/' (length=41)
public 'xdebug_message' => string '<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> SoapFault: looks like we got no XML document in C:\wamp\www\PPE3\include\accueil.inc.php on line <i>7</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</t'... (length=1485)

Request :
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:xmethods-delayed-quotes" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:listerEmployes/></SOAP-ENV:Body></SOAP-ENV:Envelope>
Response :
<br /> <font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'> <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Fatal error: Your exception class uses incorrect types for common properties: 'message' and 'file' need to be a string and 'line' needs to be an integer. in C:\wamp\www\PPE3\service\donnees\pdo3.class.php on line <i>45</i></th></tr> <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr> <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr> <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0009</td><td bgcolor='#eeeeec' align='right'>521400</td><td bgcolor='#eeeeec'>{main}( )</td><td title='C:\wamp\www\PPE3\service\donnees\webservices.class.php' bgcolor='#eeeeec'>..\webservices.class.php<b>:</b>0</td></tr> <tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.0032</td><td bgcolor='#eeeeec' align='right'>608232</td><td bgcolor='#eeeeec'>SoapServer->handle( )</td><td title='C:\wamp\www\PPE3\service\donnees\webservices.class.php' bgcolor='#eeeeec'>..\webservices.class.php<b>:</b>393</td></tr> <tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>0.0032</td><td bgcolor='#eeeeec' align='right'>649792</td><td bgcolor='#eeeeec'>Webservices->listerEmployes( )</td><td title='C:\wamp\www\PPE3\service\donnees\webservices.class.php' bgcolor='#eeeeec'>..\webservices.class.php<b>:</b>0</td></tr> <tr><td bgcolor='#eeeeec' align='center'>4</td><td bgcolor='#eeeeec' align='center'>0.0037</td><td bgcolor='#eeeeec' align='right'>672176</td><td bgcolor='#eeeeec'>Gestion::lister( )</td><td title='C:\wamp\www\PPE3\service\donnees\webservices.class.php' bgcolor='#eeeeec'>..\webservices.class.php<b>:</b>343</td></tr> <tr><td bgcolor='#eeeeec' align='center'>5</td><td bgcolor='#eeeeec' align='center'>0.0047</td><td bgcolor='#eeeeec' align='right'>792992</td><td bgcolor='#eeeeec'>PDO3::getInstance( )</td><td title='C:\wamp\www\PPE3\service\donnees\gestion.class.php' bgcolor='#eeeeec'>..\gestion.class.php<b>:</b>15</td></tr> </table></font>

Ajouter
Nom Prenom Date d'embauche Actions
( ! ) Warning: Invalid argument supplied for foreach() in C:\wamp\www\PPE3\include\accueil.inc.php on line 50
Call Stack
# Time Memory Function Location
1 0.0003 373928 {main}( ) ..\index.php:0
2 0.0012 387616 include( 'C:\wamp\www\PPE3\include\accueil.inc.php' ) ..\index.php:70
To Top
Messages postés
275
Date d'inscription
lundi 27 janvier 2014
Statut
Membre
Dernière intervention
25 avril 2019
14
Moi j'ai l'impression qu'il ne trouve pas le fichier SOAP , pourtant les chemins sont corrects x')
Messages postés
92
Date d'inscription
mercredi 21 mai 2014
Statut
Membre
Dernière intervention
15 juin 2014
16
Alors, on a toujours la meme erreur, mais on voit que après "Request :"

<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:xmethods-delayed-quotes" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:listerEmployes/></SOAP-ENV:Body></SOAP-ENV:Envelope> 


c'est bien un XML qui semble valide et qui ressemble furieusement à une requête SOAP... donc pour moi la requête c'est bon...

Par contre si on regarde apres "Response : "

<br /> <font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'> <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Fatal error: Your exception class uses incorrect types for common properties: 'message' and 'file' need to be a string and 'line' needs to be an integer. in C:\wamp\www\PPE3\service\donnees\pdo3.class.php on line <i>45</i></th></tr> <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th


Ce n'est pas du XML valide, mais ça ressemble plus à un bout de HTML ! Et si on regarde en détail on a un message qui ressemble à une erreur PHP...

Fatal error: Your exception class uses incorrect types for common properties: 'message' and 'file' need to be a string and 'line' needs to be an integer. in C:\wamp\www\PPE3\service\donnees\pdo3.class.php on line 45

Je pense que ton problème se passe coté serveur (car apparemment c'est toi aussi qui a fait le serveur SOAP) pendant la réponse... J'imagine que tu vas chercher des infos en base de données via PDO... Bah c'est la que ça doit coincer !...
Messages postés
275
Date d'inscription
lundi 27 janvier 2014
Statut
Membre
Dernière intervention
25 avril 2019
14
Je pense que t'a pas compris , que je fais tout ca en local , oui oui c'est possible ( enfin on nous a appris comme ca )

quand je te disait que la formation date de la préhistoire , je rigole pas hein x')

Dois-je te dire , que PD03 ( oui oui ca existe ) a entièrement etais codé par mon professeur ? :D
Messages postés
92
Date d'inscription
mercredi 21 mai 2014
Statut
Membre
Dernière intervention
15 juin 2014
16
lol !!!!!

A la base SOAP est un protocole permettant d'accéder de façon standardisée aux méthodes d'un objet distant (normalement situé sur une machine distante)... Bref le cas d'usage normal, c'est 2 machines distantes qui discutent ensemble...

Si tu n'as pas en charge le développement du serveur SOAP tu es tiré d'affaire à mon avis car il y a un problème coté serveur... Au moins pour la méthode qui liste les employés... Tu peux peut-être essayer d'accéder à une autre méthode genre "getListerDepartements"...

Si tu as en charge le développement du serveur SOAP il faut regarder l'endroit ou tu viens récupérer la liste des employés en base de données (cette méthode peut utiliser incorrectement une méthode contenue dans PDO3... mauvais type de variables, pas le bon nombre de paramètres, etc...)
Messages postés
275
Date d'inscription
lundi 27 janvier 2014
Statut
Membre
Dernière intervention
25 avril 2019
14
C'est bon , c'est resolu , j'ai un truc qui doit pas allez sur mon PC , Pilote , Version , Extention ...

J'ai envoyé les fichier a un ami , il les a tester , tout a marché de son coté