[nusoap] Response not of type text/xml: application/wsdl+xml
Résolu
speedred
-
Speedred Messages postés 24 Date d'inscription Statut Membre Dernière intervention -
Speedred Messages postés 24 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je viens vous voir car j'ai un soucis que je n'arrive pas à résoudre même en cherchant partout sur internet. Je dois réaliser un petit programme en PHP qui doit dialoguer avec un web service. J'arrive bien a me connecter a ce web service mais après il y a un truc qui ne va pas, lorsque celui ci doit me renvoyer des informations, j'obtiens le message d'erreur :
Response not of type text/xml: application/wsdl+xml
Je pense comprendre le message mais je ne vois pas comment le résoudre. Ce problème vient il de moi ou du web service. (je tiens a dire que je n'ai aucun moyen de voir le code du coté serveur du web service)
voici mon code :
Merci d'avance pour votre aide .
je viens vous voir car j'ai un soucis que je n'arrive pas à résoudre même en cherchant partout sur internet. Je dois réaliser un petit programme en PHP qui doit dialoguer avec un web service. J'arrive bien a me connecter a ce web service mais après il y a un truc qui ne va pas, lorsque celui ci doit me renvoyer des informations, j'obtiens le message d'erreur :
Response not of type text/xml: application/wsdl+xml
Je pense comprendre le message mais je ne vois pas comment le résoudre. Ce problème vient il de moi ou du web service. (je tiens a dire que je n'ai aucun moyen de voir le code du coté serveur du web service)
voici mon code :
require_once("../soap/lib/nusoap.php"); $wsdl = 'http://192.168.1.1:8080/fichier.wsdl'; $client = new soapclient($wsdl); $err = $client->getError(); if ($err) { // Display the error echo '<h2>Constructor error</h2><pre>' . $err . '</pre>'; // At this point, you know the call that follows will fail } $result = $client->call('MdBSpieGetInformationPasseport',array('Identifiant' => 'id', 'MotDePasse' => 'mdp')); if ($client->fault) { echo '<h2>Fault</h2><pre>'; print_r($result); echo '</pre>'; } else { // Check for errors $err = $client->getError(); if ($err) { // Display the error echo '<h2>Error</h2><pre>' . $err . '</pre>'; echo $result; } else { // Display the result echo '<h2>Result</h2><pre>'; print_r($result); echo '</pre>'; } }
Merci d'avance pour votre aide .
A voir également:
- [nusoap] Response not of type text/xml: application/wsdl+xml
- Xml download - Télécharger - Édition & Programmation
- Sms to text - Télécharger - Sauvegarde
- Clear type - Guide
- Office xml handler - Télécharger - Traitement de texte
- Driveimage xml - Télécharger - Sauvegarde
9 réponses
Bonjour,
Tout d'abord merci de ta réponse rapide.
Je suis quasiment sur que l'erreur arrive lors de l'appel à la méthode call() car si je ne mais pas l'appel a cet méthode le message n'apparait pas. Si l'erreur venait du chargement du WSDL j'aurai une erreur après l'appel du constructeur non ?
Pour ce qui est de l'url, j'en suis sur car le fichier se trouve en local, ceux qui gère le web service ne m'ont pas fournie une url qui renvoie le fichier WSDL mais directement le fichier WSDL ainsi qu'un fichier XSD. Lorsqu'il n'arrive pas a trouver le fichier, j'obtiens un autre message d'erreur qui m'indique qu'il n'arrive pas a trouver le fichier demandé (enfin un message similaire ...) De tout manière qu'il soit en local ou en ligne ne changera pas le fonctionnement ?
Cordialement,
Speedred
Tout d'abord merci de ta réponse rapide.
Je suis quasiment sur que l'erreur arrive lors de l'appel à la méthode call() car si je ne mais pas l'appel a cet méthode le message n'apparait pas. Si l'erreur venait du chargement du WSDL j'aurai une erreur après l'appel du constructeur non ?
Pour ce qui est de l'url, j'en suis sur car le fichier se trouve en local, ceux qui gère le web service ne m'ont pas fournie une url qui renvoie le fichier WSDL mais directement le fichier WSDL ainsi qu'un fichier XSD. Lorsqu'il n'arrive pas a trouver le fichier, j'obtiens un autre message d'erreur qui m'indique qu'il n'arrive pas a trouver le fichier demandé (enfin un message similaire ...) De tout manière qu'il soit en local ou en ligne ne changera pas le fonctionnement ?
Cordialement,
Speedred
Hum...
Si le web service a été modifié et que tu n'a pas eu le WSDL correspondant, ça pose problème. Mais a priori, ce n'est pas le problème ici.
Moi, j'aurais fais un appel comme ceci :
En faite, ça dépend du web service. Il est écrit en Java ? C'est du axis 1 ou 2 ? A moins que ce soit du Javax ?
Vérifie ton niveau de log et passe-le au maximum (si possible).
Ta essayé sur soapUI, parce que l'impression que j'ai est que le web service te retourne autre chose que du xml.
Pour la doc saopclient, rien ne vaut php.net :
https://www.php.net/soapclient
Cordialement,
Gigatrappeur
Si le web service a été modifié et que tu n'a pas eu le WSDL correspondant, ça pose problème. Mais a priori, ce n'est pas le problème ici.
Moi, j'aurais fais un appel comme ceci :
$client->MdBSpieGetInformationPasseport('id', 'mdp');
En faite, ça dépend du web service. Il est écrit en Java ? C'est du axis 1 ou 2 ? A moins que ce soit du Javax ?
Vérifie ton niveau de log et passe-le au maximum (si possible).
Ta essayé sur soapUI, parce que l'impression que j'ai est que le web service te retourne autre chose que du xml.
Pour la doc saopclient, rien ne vaut php.net :
https://www.php.net/soapclient
Cordialement,
Gigatrappeur
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
je te remercie.
Pour ce qui ai du langage de programmation du web service, je n'en ai aucune idée :s . Comment je pourrais savoir avec quel langage il a été écrit ?
Je viens de tester l'écriture que tu me conseillé mais cela ne fonctionne pas, il me dit que ce n'est pas une méthode présente dans le classe soapclient().
Et j'ai aussi testé avec soapUI et lorsque de je rentre des informations, même fausses, il me renvoie bien un fichier xml que soapUI arrive a lire, et j'obtiens bien les massage d'erreur que normalement je devrai recevoir .
Donc grâce a toi je peut en conclure que l'erreur ne viens pas du serveur mais bien de moi ou de nusoap ... ( ce qui veut dire aussi que le fichier est correct.).
ps: je viens de m'apercevoir que le fichier qu'il me revoit c'est le fichier WSDL, c'est vraiment bizarre...
ps2: bon grâce a toi j'y vois un peut plus clair, en comparant soapui et ce que envois, je m'aperçoit qu'il y a des différences.
voici l'en-tete de la requete.
Je me rend compte qu'il n'y a pas de "SOAPACTION" et je trouve sa assez bizarre et je ne pense pas que ça soit normal.
Cordialement,
Speedred
Pour ce qui ai du langage de programmation du web service, je n'en ai aucune idée :s . Comment je pourrais savoir avec quel langage il a été écrit ?
Je viens de tester l'écriture que tu me conseillé mais cela ne fonctionne pas, il me dit que ce n'est pas une méthode présente dans le classe soapclient().
Et j'ai aussi testé avec soapUI et lorsque de je rentre des informations, même fausses, il me renvoie bien un fichier xml que soapUI arrive a lire, et j'obtiens bien les massage d'erreur que normalement je devrai recevoir .
Donc grâce a toi je peut en conclure que l'erreur ne viens pas du serveur mais bien de moi ou de nusoap ... ( ce qui veut dire aussi que le fichier est correct.).
ps: je viens de m'apercevoir que le fichier qu'il me revoit c'est le fichier WSDL, c'est vraiment bizarre...
ps2: bon grâce a toi j'y vois un peut plus clair, en comparant soapui et ce que envois, je m'aperçoit qu'il y a des différences.
voici l'en-tete de la requete.
POST /FMBV/soap/wsMdBSpie.wsdl HTTP/1.0 Host: 192.168.1.1:8080 User-Agent: NuSOAP/0.9.5 (1.123) Content-Type: text/xml; charset=utf-8 SOAPAction: "" Content-Length: 625
Je me rend compte qu'il n'y a pas de "SOAPACTION" et je trouve sa assez bizarre et je ne pense pas que ça soit normal.
Cordialement,
Speedred
En effet...
En faite, si j'étais toi, j'utiliserai pas nusoap. Moi, j'aurai utiliser directement l'objet soapclient.
Essaye ce code, peut-être cela t'aidera mieux comprendre le problème.
Pour ce qui est du langage du WS, faut demander avec le(s) personne(s) qui l'a(ont) écrit.
Peut-être quelqu'un d'autre a une idée pour nusoap ?
Cordialement,
Gigatrappeur
En faite, si j'étais toi, j'utiliserai pas nusoap. Moi, j'aurai utiliser directement l'objet soapclient.
Essaye ce code, peut-être cela t'aidera mieux comprendre le problème.
$url_wsdl = 'http://.../'; $options = array('soap_version'=>SOAP_1_1, 'exceptions'=>true, 'trace'=>1, 'cache_wsdl'=>WSDL_CACHE_NONE,'connection_timeout' => 25); $client = new soapclient($url_wsdl, options); echo '<pre>'; print_r($client ->__getFunctions()); // vérification des méthodes echo '</pre>'; $function = 'MdBSpieGetInformationPasseport'; $parametres = array('Identifiant' => 'id', 'MotDePasse' => 'mdp'); try { $client->$function($parametres); } catch (Exception $fault) { $string = "<b>Retour en erreur</b> :<br />"; $string .= "<b>ERROR:</b> ".$fault->faultcode."-".$fault->faultstring."."; $string .= "<br /><b>Trace : </b><br />"; $string .= 'Request : <br/><xmp>'; $string .= $client->__getLastRequest(); $string .= '</xmp>'; $string .= 'Reponse: <br/><xmp>'; $string .= $client->__getLastResponse(); $string .= '</xmp>'; echo $string; }
Pour ce qui est du langage du WS, faut demander avec le(s) personne(s) qui l'a(ont) écrit.
Peut-être quelqu'un d'autre a une idée pour nusoap ?
Cordialement,
Gigatrappeur
Je te remercie vraiment .
Je pense y voir un peut plus clair, mais malheureusement ce n'ait pas moi qui gère le serveur php et donc je suis obligé d'utilisé nusoap ...
J'ai finalement réussi a mettre le "SOAPAction" mais ça ne change toujours rien .
Je pense y voir un peut plus clair, mais malheureusement ce n'ait pas moi qui gère le serveur php et donc je suis obligé d'utilisé nusoap ...
J'ai finalement réussi a mettre le "SOAPAction" mais ça ne change toujours rien .