Bonjour,

J'ai une question sur la norme SOAP sur laquelle je ne trouve pas de réponse.

j'ai un type défini comme ceci

Code :Sélectionner tout -Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<s:complexType name="ArrayOfArrayOfString">
	<s:complexContent mixed="false">
		<s:restriction base="soapenc:Array">
			<s:attribute wsdl:arrayType="tns:ArrayOfString[]" ref="soapenc:arrayType"/>
		</s:restriction>
	</s:complexContent>
</s:complexType>


quand j'utilise un SoapClient PHP il me construit la requête comme ceci

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
 
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns<img src="images/smilies/icon_mad.gif" border="0" alt="" title=":x" class="inlineimg" />sd="http://www.w3.org/2001/XMLSchema" xmlns<img src="images/smilies/icon_mad.gif" border="0" alt="" title=":x" class="inlineimg" />si="http://www.w3.org/2001/XMLSchema-instance" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
	<SOAP-ENV:Body>
		<ns1:echo2DArray>
			<AOfAOfStr SOAP-ENC:arrayType="ns1:ArrayOfString[3]" xsi:type="ns1:ArrayOfArrayOfString">
				<item SOAP-ENC:arrayType="xsd:string[2]" xsi:type="ns1:ArrayOfString">
					<item xsi:type="xsd:string">string[0 0]</item>
					<item xsi:type="xsd:string">string[0 1]</item>
				</item>
				<item SOAP-ENC:arrayType="xsd:string[1]" xsi:type="ns1:ArrayOfString">
					<item xsi:type="xsd:string">string[1 0]</item>
				</item>
				<item SOAP-ENC:arrayType="xsd:string[1]" xsi:type="ns1:ArrayOfString">
					<item xsi:type="xsd:string">string[1 1]</item>
				</item>
			</AOfAOfStr>
		</ns1:echo2DArray>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


mais le serveur n'aime pas cette requête car il s'attend à recevoir ceci

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
22
 
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns<img src="images/smilies/icon_mad.gif" border="0" alt="" title=":x" class="inlineimg" />sd="http://www.w3.org/2001/XMLSchema" xmlns<img src="images/smilies/icon_mad.gif" border="0" alt="" title=":x" class="inlineimg" />si="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
  <SOAP-ENV:Body xmlns:NS1="http://tempuri.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <NS1:echo2DArray>
      <AOfAOfStr xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:string[4,3]">
        <item>String [0][0]</item>
        <item>String [0][1]</item>
        <item>String [0][2]</item>
        <item>String [1][0]</item>
        <item>String [1][1]</item>
        <item>String [1][2]</item>
        <item>String [2][0]</item>
        <item>String [2][1]</item>
        <item>String [2][2]</item>
        <item>String [3][0]</item>
        <item>String [3][1]</item>
        <item>String [3][2]</item>
      </AOfAOfStr>
    </NS1:echo2DArray>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>


ou éventuellement ceci
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
22
23
24
25
26
27
28
29
30
 
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns<img src="images/smilies/icon_mad.gif" border="0" alt="" title=":x" class="inlineimg" />sd="http://www.w3.org/2001/XMLSchema" xmlns<img src="images/smilies/icon_mad.gif" border="0" alt="" title=":x" class="inlineimg" />si="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
  <SOAP-ENV:Body xmlns:NS1="http://tempuri.org/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <NS1:echo2DArray>
      <AOfAOfStr xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="NS1:string[][4]">
        <item xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="NS1:ArrayOfString[3]">
          <item>String [0][0]</item>
          <item>String [0][1]</item>
          <item>String [0][2]</item>
        </item>
        <item xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="NS1:ArrayOfString[3]">
          <item>String [1][0]</item>
          <item>String [1][1]</item>
          <item>String [1][2]</item>
        </item>
        <item xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="NS1:ArrayOfString[3]">
          <item>String [2][0]</item>
          <item>String [2][1]</item>
          <item>String [2][2]</item>
        </item>
        <item xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="NS1:ArrayOfString[3]">
          <item>String [3][0]</item>
          <item>String [3][1]</item>
          <item>String [3][2]</item>
        </item>
      </AOfAOfStr>
    </NS1:echo2DArray>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>


et en effet, dans la norme, je ne vois pas d'exemple utilisant un type autre que Array...donc ma question, est-ce que l'encodage PHP respecte la norme ?