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 :
public class TestWS { return result(param1, param2); } return result(param1, param2, param3); } return result(param1, param2, param3, param4); } StringBuilder b = new StringBuilder(); int i = 0; b.append("param " ).append(++i).append(" = " ).append(p); if (i < params.length) b.append(" / " ); } return b.toString(); } }
|
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 :
<soapenv:Envelope> <soapenv:Body> <testWith2Response> <ns1:testWith2Return>param 1 = def / param 2 = abc</ns1:testWith3Return> </testWith2Response> </soapenv:Body> </soapenv:Envelope>
|
http://localhost:8080/projet/TestW [...] param3=ghi
Code :
<soapenv:Envelope> <soapenv:Body> <testWith3Response> <ns1:testWith3Return>param 1 = ghi / param 2 = def / param 3 = abc</ns1:testWith3Return> </testWith3Response> </soapenv:Body> </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
---------------
Always wear a camera!