Bonjour dans la librairie que j'utilise pour invoquer un service web j'obtiens un résultat étrange au niveau de la sérialisation des parametres
si je prend la classe Client :un client est quelque chose de la formeCode:
1
2
3
4
5
6
7 Class Client { String nom; String prenom; Date debut; Date fin; } Class Date {...}
serialize_val me donne :Code:
1
2
3
4
5
6
7
8
9
10
11
12 monClient ::= { nom ::= 'Terrien'; prenom ::= 'Jean-Yves'; debut ::= { jour ::= 20061129 ... } fin ::= { jour ::= 20061231 ... } }
c'est ce que donne en standard la librairie lorsqu'on n'a pas de WSDLCode:
1
2
3
4
5
6
7
8
9
10 <Client> <nom xsi:type="xsd:string">Terrien</test> <prenom xsi:type="xsd:string">Jean-Yves</test> <Date> <jour xsi:type="xsd:int">20061129</test> </Date> <Date> <jour xsi:type="xsd:int">20061231</test> </Date> </Client>
Ce qui est étrange la dedans c'est que j'ai perdu le nom de mon parametre monClient. J'ai bien un xml qui repésente un client mais je ne sais pas que c'est monClient
pire dans le XML j'ai perdu les attributs debut et fin j'ai deux date mais pas le moyen de savoir à quel attribut les affecter.
pire suivant ce qui c'est passé avant la serialisation la date de debut de fin ne sont pas obligatoirement dans le même ordre.
le même client peut se retrouver encodé comme suit :
du coup impossible de reconstituer mon client.Code:
1
2
3
4
5
6
7
8
9
10 <Client> <nom xsi:type="xsd:string">Terrien</test> <Date> <jour xsi:type="xsd:int">20061231</test> </Date> <prenom xsi:type="xsd:string">Jean-Yves</test> <Date> <jour xsi:type="xsd:int">20061129</test> </Date> </Client>
Je n'avais jamais regardé le XML de SOAP de si près et je me demande si c'est un bug de ma librairie ou si c'est ainsi que le défini le protocole.
Comment doit être encodé une classe lorsque aucun WSDL n'a été défini ?
La solution est de définir un WSDL.
vu que pour le moment je défini et le service et le client je passe par des Tableaux associatifs. mais ça n'enlève pas le problème car si un jour je dois invoquer un service qui n'est pas défini par mes soins, n'a pas de WSDL et attend un objet en parametre j'ai ne vois pas comment j'aurais la garantie que le résultat sera corectement interprété.
Merci de votre aide
A+JYT