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
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 <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>
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 <?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:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="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>
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 <?xml version="1.0"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="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>
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 ?
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:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="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>
Partager