Bonjour à tous.
Je rencontre un petit problème avec la génération d'une réponse SOAP et j'aurais besoin de vos lumières pour m'éclairer un peu.
Le contexte, je remplace un web service codé en java avec Axis (si j'en crois les namespace du webservice actuel) par un webservice accessible depuis une application codée en Symfony.
J'ai basé mon webservice sur le wsdl utilisé par le ws java et j'arrive à générer une réponse. Je teste tout ça avec SOAP UI et de mon point de vue ça fonctionne. Pourtant le format de la réponse n'est pas le même.
En effet, dans la réponse faite par Java j'ai quelque chose du style :
Alors que mon WebService PHP renvoie quelquechose du genre
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
31
32
33
34 ... <ns1:getResourceActualsDetailedPerMonthResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="blablaba"> <getResourceActualsDetailedPerMonthReturn href="#id0"/> </ns1:getResourceActualsDetailedPerMonthResponse> <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:ActualsRecord" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="blablaba"> <actualArray soapenc:arrayType="ns2:Actual[46]" xsi:type="soapenc:Array"> <item href="#id1"/> <item href="#id2"/> ... ... ... </actualArray> <pstate xsi:type="xsd:string">1</pstate> <pstatelabel xsi:type="xsd:string">SUCCESS</pstatelabel> </multiRef> <multiRef id="id1 soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns3:Actual" xmlns:ns3="http://actuals.clarity.crp.axis" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"> <code>....</code> <quantity>...</quantity> <wpname>...</wpname> </multiRef> <multiRef id="id1 soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns3:Actual" xmlns:ns3="http://actuals.clarity.crp.axis" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"> <code>....</code> <quantity>...</quantity> <wpname>...</wpname> </multiRef> ...
Le système qui appelle le webservice n'arrive visiblement pas à récupérer ses petits dans ce que je lui envoie. Je me dis donc que si je renvoie la réponse au même format qu'Axis il aurait peut être moins de mal.
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 <ns1:getResourceActualsDetailedPerMonthResponse> <getResourceActualsDetailedPerMonthReturn xsi:type="ns1:ActualsRecord"> <actualArray SOAP-ENC:arrayType="ns1:Actual[2]" xsi:type="ns1:ArrayOfActual"> <item xsi:type="ns1:Actual"> <code>....</code> <quantity>...</quantity> <wpname>...</wpname> </item> <item xsi:type="ns1:Actual"> <code>....</code> <quantity>...</quantity> <wpname>...</wpname> </item> </actualArray> <pstate xsi:type="xsd:string">1</pstate> <pstatelabel xsi:type="xsd:string">SUCCESS</pstatelabel> </getResourceActualsDetailedPerMonthReturn> </ns1:getResourceActualsDetailedPerMonthResponse>
J'ai fait quelques recherches et je ne vois pas comment, en utilsiant la librairie SOAP standard de PHP 5, générer du multiref.
Auriez vous des pistes ?
Merciiii
Partager