Bonjour,
j'ai besoin de migrer mon appel web service php4 sous la version php5, cependant je me heurte à une difficulté, le passage des paramètres.
Afin de vous préciser le contexte, ci-dessous l'appel php4 puis php5. Ce dernier ne fonctionne pas.
appel php4 (fonctionne bien) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 include_once("nusoap.php"); $soapclient = new soapclient("http://monurl:7001/dossier",false,false,false,false,false,30,30); $param = array("PARAM1" => "VALEUR1", "PARAM2"=>"VALEUR2", "PARAM3"=>"VALEUR3"); $retour = $soapclient->call("METHODE_DISTANTE", $param); print_r($retour);
appel php5 (ne fonctionne pas) :
L'appel en php5 me lève une exception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $soapclient = new SoapClient(NULL, array("location" => "http://monurl:7001/dossier", "uri" => "urn:xmethods-delayed-quotes", 'trace' => 1,)); $tab = array ("PARAM1"=> "VALEUR1", "PARAM2"=>"VALEUR2", "PARAM3"=>"VALEUR3"); $retour = call_user_func_array(array($soapclient, 'METHODE_DISTANTE'), array($tab)); print_r($retour);
Un print_r du client soap (ci-dessous) semble cohérent (je pense que le problème se situe au niveau du passage des paramètres).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Fatal error: Uncaught SoapFault exception: [soapenv:Server.userException] org.xml.sax.SAXException: Bad types (class java.util.HashMap -> class java.lang.Integer) in chemin/nomDeMonFichier.php:26 Stack trace: #0 [internal function]: SoapClient->__call('METHODE_DISTANTE', Array) #1 [internal function]: SoapClient->METHODE_DISTANTE(Array) #2 chemin/nomDeMonFichier.php(26): call_user_func_array(Array, Array) #3 {main} thrown in chemin/nomDeMonFichier.php on line 26
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SoapClient Object ( [uri] => urn:xmethods-delayed-quotes [location] => http://monurl:7001/dossier [trace] => 1 [_soap_version] => 1 )
Remarque :
- je précise que le web service côté serveur ne propose pas de wsdl, j'ai donc besoin que mon appel en php5 fonctionne en mode non wsdl.
- je me suis basé au départ sur cet exemple : http://devzone.zend.com/node/view/id/689 mais il ne passe qu'un seul paramètre (j'ai testé également d'autres syntaxes mais sans succès, dans la portion de code que je vous présente, une syntaxe que j'ai repris d'un appel php5 en mode wsdl qui fonctionne).
Auriez-vous une idée pour que ma migration vers php5 fonctionne ?
Partager