[RESOLU] SOAP/WSDL : passer un tableau en paramètre

Petit nouveau ! | 3 Messages

29 oct. 2013, 17:39

Bonjour,

je teste les webservices avant de les utiliser pour un projet.
Je ne parviens pas à passer un tableau en paramètre. La fonction appelée par le webservice retourne le nombre d'éléments dans le tableau, sauf que j'obtiens toujours 1, quelque soit le nombre d'éléments ajoutés lors de l'init du tableau.

Fichier wsdl (pas en entier, juste la déclaration du type et celle du message) :

Code : Tout sélectionner

<xsd:complexType name="tabEntiers"> <xsd:sequence> <xsd:element name="val" type="xsd:int" maxOccurs="unbounded"></xsd:element> </xsd:sequence> </xsd:complexType> <wsdl:message name="testTableauRequest"> <wsdl:part name="tableau" type="tns:tabEntiers"></wsdl:part> </wsdl:message>
Serveur :
<?php

function testTableau($tableau){
	return count($tableau);
	
}

ini_set("soap.wsdl_cache_enabled", "0");
$serveurSOAP = new SoapServer('http://localhost/ws_test/cls_bdd.wsdl');
$serveurSOAP->addFunction('testTableau');
$serveurSOAP->handle();
?>
Client :
<?php
ini_set("soap.wsdl_cache_enabled", "0");
$clientSOAP = new SoapClient('http://localhost/ws_test/cls_bdd.wsdl');
$tableau= array(1,2,3,4);
echo count($tableau) . "<br>";
echo "testTableau = " . $clientSOAP->testTableau($tableau) . "<br>"; //ICI j'ai le problème. 1 est toujours retourné.
?>
J'ai testé en modifiant le code dans la fonction testTableau comme suit :
function testTableau($tableau){
return $tableau[1];
}
Dans ce cas, j'obtiens l'erreur suivante :

Code : Tout sélectionner

Fatal error: Uncaught SoapFault exception: [Client] looks like we got no XML document in C:\Program Files (x86)\Zend\Apache2\htdocs\ws_test\index.php:10 Stack trace: #0 C:\Program Files (x86)\Zend\Apache2\htdocs\ws_test\index.php(10): SoapClient->__call('testTableau', Array) #1 C:\Program Files (x86)\Zend\Apache2\htdocs\ws_test\index.php(10): SoapClient->testTableau(Array) #2 {main} thrown in C:\Program Files (x86)\Zend\Apache2\htdocs\ws_test\index.php on line 10
J'ai lu pas mal d'articles en fr ou en anglais, j'ai testé, beaucoup, beaucoup, mais je ne comprends pas ce qui ne va pas.

Si quelqu'un a une idée, voire même la solution :D

Merci d'avance