Bonjour,
Je dois réaliser un client de webservice en PHP5 (le webservice est en Java), j'ai réussi à appeler des fonctions simples, par contre j'ai un soucis avec une fonction qui prend en argument un tableau de string (tns:ArrayOfString dans le WSDL).
J'ai essayé en envoyant directement un array contenant les strings ce qui me donnait une erreur de paramètres. J'ai ensuite essayé avec un array associatif où chaque string était associée à true, et là j'obtiens une erreur très étrange de SQL. C'est peut être le webservice qui a un soucis mais il a normalement été testé par des clients java avec succès. Donc si quelqu'un pouvait me dire quelle syntaxe utiliser pour envoyer un tableau de string pour être sûr que ça ne vienne pas de mon client (ce qui est très certainement le cas).

J'ai pas mal cherché sur internet, mais je n'ai jamais trouvé de réponse claire sur le sujet : comment envoyer un tableau de string.

---------------------------------
Edit je viens de réaliser que le type était en fait déclaré par le WSDL, je pensais que c'était un type de base...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<xsd:complexType name="ArrayOfString">
	<xsd:sequence>
		<xsd:element maxOccurs="unbounded" minOccurs="0" name="string" nillable="true" type="xsd:string"/>
	</xsd:sequence>
</xsd:complexType>
Je reformule donc ma question, comment savoir sous quelle forme PHP je dois envoyer mes valeurs pour coller à ce type "ArrayOfString" ?
---------------------------------

Des extraits du WSDL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<xsd:element name="getData">
	<xsd:complexType>
		<xsd:sequence>
			<xsd:element maxOccurs="1" minOccurs="1" name="in0" nillable="true" type="xsd:string"/>
			<xsd:element maxOccurs="1" minOccurs="1" name="in1" nillable="true" type="xsd:string"/>
			<xsd:element maxOccurs="1" minOccurs="1" name="in2" nillable="true" type="tns:ArrayOfString"/>
		</xsd:sequence>
	</xsd:complexType>
</xsd:element>
 
<wsdl:message name="getDataRequest">
	<wsdl:part name="parameters" element="tns:getData"/>
</wsdl:message>
 
.. portType ..
	<wsdl:operation name="getData">
		<wsdl:input name="getDataRequest" message="tns:getDataRequest"/>
		<wsdl:output name="getDataResponse" message="tns:getDataResponse"/>
		<wsdl:fault name="Exception" message="tns:Exception"/>
	</wsdl:operation>
...
Et mon client PHP5 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
$client = new SoapClient("https:....wsdl",
	array(
	'trace' => 1,
	'soap_version' => SOAP_1_1,
	'style' => SOAP_DOCUMENT,
	'encoding' => SOAP_LITERAL
	));
 
$data = $client->getData(array(
	'in0' => "$arg1",
	'in1' => "$arg2",
	'in2' => array("val1" => true, "val2" => true)
	));
Merci d'avance !