Web Service Axis, inversion paramètres methode

Web Service Axis, inversion paramètres methode - Java - Programmation

Marsh Posté le 06-07-2009 à 10:33:13    

Bonjour à tous,
 
j'ai un souci sur un web service en Java crée via Eclipse utilisant Axis.
 
J'expose une méthode qui prends N paramètres (N>1) et je génère le web service via eclipse en mode litteral/wrapped afin de pouvoir l'appeler via des requêtes HTTP GET, car à terme ils devraient être appelés par du javascript pour des besoins d'auto-completion ou validation business.
 
J'ai donc un problème qui est que lorsque j'appelle les web service via Firefox ou IE j'ai les paramètres des méthodes qui sont inversés. Ça marche très bien si j'envoie directement des requêtes SOAP ou via le Web Service explorer d'Eclipse.
J'ai fait donc un petit exemple  
 

Code :
  1. public class TestWS {
  2.     public String testWith2(String param1, String param2) {
  3.         return result(param1, param2);
  4.     }
  5.     public String testWith3(String param1, String param2, String param3) {
  6.         return result(param1, param2, param3);
  7.     }
  8.     public String testWith4(String param1, String param2, String param3, String param4) {
  9.         return result(param1, param2, param3, param4);
  10.     }
  11.     private static String result(String... params) {
  12.         StringBuilder b = new StringBuilder();
  13.         int i = 0;
  14.         for(String p: params) {
  15.             b.append("param " ).append(++i).append(" = " ).append(p);
  16.             if (i < params.length)
  17.                 b.append(" / " );
  18.         }
  19.         return b.toString();
  20.     }
  21. }


 
Puis dans eclipse clic droit sur la classe > Web service > create web service > litteral/wrapped > Finish
 
Si j'appelle via IE ou firefox voici le resultat :
http://localhost:8080/projet/TestW [...] param2=def

Code :
  1. <soapenv:Envelope>
  2.  <soapenv:Body>
  3.    <testWith2Response>
  4.      <ns1:testWith2Return>param 1 = def / param 2 = abc</ns1:testWith3Return>
  5.    </testWith2Response>
  6.  </soapenv:Body>
  7. </soapenv:Envelope>


http://localhost:8080/projet/TestW [...] param3=ghi

Code :
  1. <soapenv:Envelope>
  2.  <soapenv:Body>
  3.    <testWith3Response>
  4.      <ns1:testWith3Return>param 1 = ghi / param 2 = def / param 3 = abc</ns1:testWith3Return>
  5.    </testWith3Response>
  6.  </soapenv:Body>
  7. </soapenv:Envelope>


Il m'a bien inversé les paramètres (on dirait qu'il les dépiles) du coup ça pose problème dans les méthodes appelées qui se retrouvent avec une entrée totalement invalide (des Calendar sont filé à la place d'Integer ou autre).
 
J'aimerais donc savoir si vous avez déjà eu ce problème, est-ce un problème venant du navigateur ? De la config d'eclipse ? Tout est Ok du côté du wsdl au niveau de l'ordre des paramètres et lors d'un appel via un message SOAP directement ou le web service explorer d'eclipse j'ai bien la réponse attendue.
 
Si ce n'est pas possible à régler il me faudra trouver un autre moyen que via GET pour appeler un web service en javascript, car je ne sais pas comment transmettre un message SOAP généré via javascript au web service (via post mais comment ?) ? Si ca peut aider j'utilise jQuery, mais bon là on s'éloigne de Java.
 
Merci à ceux qui pourront m'aider  :jap:


---------------
Always wear a camera!
Reply

Marsh Posté le 06-07-2009 à 10:33:13   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed