Bonjour
Nous avons une application qui se connecte depuis quelques années en en tant que client à plusieurs WebServices.
Nous utilisons Axis 1.4 pour générer et utiliser le client. Nous ne souhaitons pas dans l'immédiat faire évoluer notre application avec un autre framework pour les WebServices; cela impliquerait beaucoup de correction de code et de test.
Récemment un des WebServices que nous interrogeons a évolué. J'arrive toujours à recompiler sans probème le client java avec un script ANT mais pour certaines fonctions de ce webservice nous avons cette erreur à l'exécution :
En faisant des tests avec SOAPUI, j'ai remarqué ( je ne sais pas si cela à un rapport) que les fonctions qui font cette erreur retournent des listes de valeurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 org.xml.sax.SAXException: No deserializer for {http://www.w3.org/2001/XMLSchema}anyType at org.apache.axis.encoding.DeserializerImpl.onStartElement(DeserializerImpl.java:453) at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:393) at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048) at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165) at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141) at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236) at org.apache.axis.message.RPCElement.getParams(RPCElement.java:384) at org.apache.axis.client.Call.invoke(Call.java:2467) at org.apache.axis.client.Call.invoke(Call.java:2366) at org.apache.axis.client.Call.invoke(Call.java:1812)
J'ai regardé la différence du retour SOAP XML avant et après la modifications du WS et j'ai constaté que le format de retour des listes est différent.
AVANT:
APRES:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <SOAP-ENV:Envelope SOAP-ENV:........> <SOAP-ENV:Body> <ns4:getRefReviewResponse> <arrayOfReviewId xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:int[31]" SOAP-ENC:offset="[0]"> <item xsi:type="xsd:int">15221</item> <item xsi:type="xsd:int">24001</item> <item xsi:type="xsd:int">58914</item> <item xsi:type="xsd:int">59093</item> <item xsi:type="xsd:int">59302</item> <item xsi:type="xsd:int">59713</item> ....
Si quelqu'un à une idée pour corriger mon erreur n'hésitez pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <SOAP-ENV:Envelope xmlns:.........> <SOAP-ENV:Body> <ns1:getRefReviewResponse> <getRefReviewResult> <xsd:int>1</xsd:int> <xsd:int>2</xsd:int> <xsd:int>40576</xsd:int> ....
J'aimerais si possible ne pas toucher le code du client généré automatiquement par wsdl2java.
@+
Eric
Partager