Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1317 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  accéder à un webservice

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

accéder à un webservice

n°1879393
cannelline
Posté le 29-04-2009 à 16:20:35  profilanswer
 

bonjour à tous !
 
Je programme gentiment mes pages JSP depuis un moment et tout roule.
Mais là, je rencontre une difficulté technique.
 
Je collabore avec une autre équipe qui doit me mettre à disposition des données que j'aurai à afficher. Cette équipe me les propose sous forme d'un accès à un webservice développé par leurs soins en .NET.
 
Dans mon souvenir, je suis certaine d'avoir à intégrer un package (framework ?) à mon code pour pouvoir utiliser les fonctions du WS, non ?
Mais ils n'ont aucun package à me proposer (l'intégration d'un WS avec Java c'est pas leur domaine).
Alors si vous pouviez m'éclaircir le concept de la connexion à un WS à partir d'une appli web java... ça m'aiderait...
(y'a pas un truc avec axis ? mais j'veux pas dire de conneries, je maitrise pas assez...)
Pour info, je bosse avec Tomcat.
 
merci de votre aide.

mood
Publicité
Posté le 29-04-2009 à 16:20:35  profilanswer
 

n°1879400
frabill
Posté le 29-04-2009 à 16:48:41  profilanswer
 

Oui il te faut une bibliothèque capable de "causer" en WS, Axis en est une très répandue. Tu as aussi JAX-WS.
 
Il suffit de te faire fournir le fichier WSDL correspondant au WS qu'on t'expose pour pouvoir générer automatiquement les classes et méthodes nécessaires à l'appel du WS. Ces outils de génération sont fournis avec les bibliothèques (et disponibles directement dans certains IDE comme Eclipse) : WSDL2java pour Axis par exemple...


Message édité par frabill le 29-04-2009 à 16:49:35
n°1879412
cannelline
Posté le 29-04-2009 à 17:17:05  profilanswer
 

ok, alors je récapitule...
 
j'ai bien un wsdl correspondant au WS, si j'utilise l'outil d'Eclipse "WSDL2java" ça va me générer un jar à inclure dans mon projet pour que je puisse appeler les méthodes de mon collègue ?

n°1879418
frabill
Posté le 29-04-2009 à 17:22:54  profilanswer
 

cannelline a écrit :

ok, alors je récapitule...
 
j'ai bien un wsdl correspondant au WS, si j'utilise l'outil d'Eclipse "WSDL2java" ça va me générer un jar à inclure dans mon projet pour que je puisse appeler les méthodes de mon collègue ?


 
Oui et après ça sera transparent pour toi quand tu vas appeler les méthodes en java. il faut bien sûr inclure dans ton projet la bibliothèque WS (et ses dépendances) et ces squelettes générés par WSDL2java.
 
Et modifier à la main dans le squelette le "endpoint" (l'URL du WS) ou régénérer automatiquement les squelettes si le WS change d'adresse.


Message édité par frabill le 29-04-2009 à 17:24:24
n°1879422
cannelline
Posté le 29-04-2009 à 17:25:07  profilanswer
 

merciiii ;)
 
faut que je teste tout ça.

n°1879443
cannelline
Posté le 29-04-2009 à 17:50:25  profilanswer
 

alors, je n'ai pas trouvé de "wsdl2java" dans ma version d'eclipse (Europa) mais j'ai fait import/webservice. Il me demande le lien vers un wsil et vers le wsdl. J'ai crée un wsil vide en local et j'ai linké mon wsdl (avec l'adresse du webservice.asmx?WSDL) et j'obtiens l'erreur : IWAB0453E Error writing WSIL (il reconnait pas le path local). Donc il doit vouloir un vrai wsil que je n'ai pas  :heink:  ?

n°1879448
frabill
Posté le 29-04-2009 à 18:00:00  profilanswer
 

Passe en Eclipse 3.4 si tu n'as pas de contraintes, il me semble que c'est mieux au niveau de la génération automatique de code client WS.
 
Sinon avec Axis, tu as ça en ligne de commande : http://ws.apache.org/axis2/1_4_1/u [...] ateclients


Message édité par frabill le 29-04-2009 à 18:02:07
n°1879515
cannelline
Posté le 29-04-2009 à 21:47:10  profilanswer
 

ok, j'ai essayé de passer par Axis et j'ai bien généré 2 fichiers java :
org/monpackage/ServiceCallBackHandler.java
org/monpackage/ServiceStub.java
 
mais en voulant les compiler, J'ai une erreur (plein en fait) sur le second parce que "org.apache.axis2.*****" n'est pas reconnu.
J'ai regardé dans ce que j'ai téléchargé d'axis et je n'ai aucune structure qui ressemble à ça (au cas où il faudrait la mettre dans le classpath).
 
une idée ?

n°1879535
frabill
Posté le 29-04-2009 à 23:19:03  profilanswer
 

Regarde bien si tu as Axis 2 et non Axis tout court...  
 
Mais il faut bien mettre le jar d'Axis 2 (et ses dépendances). Sauf erreur de packaging (ou de l'outil) dans leur livraison, il doit bien y avoir du org.apache.axis2.* quelque part (de mémoire)

n°1881176
cannelline
Posté le 05-05-2009 à 19:07:54  profilanswer
 

merci beaucoup pour ton aide.
Alors comme j'utilise la version MyEclipse d'Eclipse, la v7 ne tourne pas sous Ubuntu 64bits (une NPE à chaque fois que je tape une lettre de code :pfff: )
 
Bref, j'ai réussi à générer mon client avec ma version actuelle (menu contextuel du wsdl dans l'arborescence  du projet). Maintenant, il faut que je réussisse à utiliser tout cela à bon escient.  
 
merci encore pour m'avoir bien éclairée sur le sujet.

mood
Publicité
Posté le 05-05-2009 à 19:07:54  profilanswer
 

n°1883078
cannelline
Posté le 11-05-2009 à 14:24:34  profilanswer
 

bon, j'ai quelques erreurs à la génération... mais je ne pense pas que ça pose pb...
 
MyEclipse utilise JAX-WS pour générer le client, et voici les classes que j'obtiens :  
-HelloWorld.java (empty class)
-HelloWorldResponse.java
-ObjectFactory.java
-package-info.java
-Ws1.java
-Ws1HttpGet.java (interface)
-Ws1HttpPost.java (interface)
-Ws1Soap.java
-WsEcho.java
-WsEchoResponse.java  
 
Mais j'ai beau retourner le pb dans tous les sens, je ne vois pas quel objet instancier pour me connecter...
Je devrais avoir acces à 2 methodes :
-helloworld qui retourne la chaine "HelloWorld"
-echo qui retourne la chaine mise en parametre
 
tout ce que j'ai fait a l'ai de ne fonctionner qu'en local.
 

Code :
  1. HelloWorldResponse hw_obj = new HelloWorldResponse();
  2. hw_obj.setHelloWorldResult("test hello world" ); // if I don't set the
  3. result, I have "null"
  4. String testhw = hw_obj.getHelloWorldResult();
  5. out.println("TEST HW : " + testhw);
  6. //this one displays "test echo"
  7. WsEchoResponse echo_obj = new WsEchoResponse();
  8. echo_obj.setWsEchoResult("test echo" );
  9. String testecho = echo_obj.getWsEchoResult();
  10. out.println("TEST ECHO : " + testecho);


 
je dois instancier autre chose pour etre en mode "connecté" ?
 
Les gens qui ont fait ce webservice (en .NET) ne savent pas m'aiguiller là dessus (java c'est pas leur truc) mais me conseillent de ne pas utiliser SOAP... ça veut dire quoi ?
 
merci d'avance.

n°1883083
frabill
Posté le 11-05-2009 à 14:33:05  profilanswer
 

Il faut regarder le contenu de toutes les classes java qui ont été générées, tu devrais pouvoir rapidement trouver ce que tu dois appeler/instancier (sauf si les erreurs sont importantes et indiquent que toutes les classes n'ont pas été générées). Il y a sûrement des trucs intéressants dans ton ObjectFactory.java qui te permettent d'instancier le bon objet.
Essaie de localiser la classe qui contient l'URL de ton WS, c'est elle qui utilisera les les objets et fera l'appel effectif en soap (Ws1Soap.java  ?)
 
Je ne vois pas comment tu pourrais éviter d'utiliser du SOAP en faisant du WS classique, c'est le format de message par défaut... Ou alors c'est du REST et là je ne maitrise pas...


Message édité par frabill le 11-05-2009 à 14:38:03
n°1883329
cannelline
Posté le 11-05-2009 à 17:37:17  profilanswer
 

selon eux...
en faisant https://lien.du.webservice.asmx/HelloWorld ça pointe vers une page XML contenant la string "hello world"
et https://lien.du.webservice.asmx/ws_echo?strEcho=blabla ça pointe vers une page XML contenant la string "blabla"
 
mais dans ce cas, pas besoin de client ?? c'est ça que je comprends pas.

n°1883333
frabill
Posté le 11-05-2009 à 17:45:16  profilanswer
 

cannelline a écrit :

selon eux...
en faisant https://lien.du.webservice.asmx/HelloWorld ça pointe vers une page XML contenant la string "hello world"
et https://lien.du.webservice.asmx/ws_echo?strEcho=blabla ça pointe vers une page XML contenant la string "blabla"
 
mais dans ce cas, pas besoin de client ?? c'est ça que je comprends pas.


 
OK donc apparemment il ne faut pas interroger le WS en SOAP, ça serait du WS "REST"... Je n'ai pas d'expérience avec ce genre de WS, je ne sais pas quelles sont les bonnes pratiques et les bons outils pour ça
 
http://fr.wikipedia.org/wiki/REST
 
http://www.google.fr/search?q=java [...] =firefox-a

n°1883340
cannelline
Posté le 11-05-2009 à 17:55:16  profilanswer
 

ok merci  :bounce:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  accéder à un webservice

 

Sujets relatifs
Problème avec WebService et InterfaceAcceder à une class à partir d'un autre fichier
configurer ip fixe pour accéder à serveur cvsAccéder à HttpSession avec AOP
acceder a une page web pourmodificationComment un simple exécutable peut accéder des objets COM+
[AS3] Error #1009: Il est impossible d'accéder à la propriété ou à...Accéder à une plage définie depuis un formulaire
Webservice en VBA sous Excel ou Access. pour acceder a Amazon 
Plus de sujets relatifs à : accéder à un webservice


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR