Question : comment consommer simplement un web service
Réponse : avec groovy, très simplement en 3 lignes de code
Nous allons utiliser le webservice crée à l’occasion du billet suivant : Grails, Groovy, xFire & SoapUI : créer un web service et le tester en 22 lignes de codes, 7 commandes et 5 minutes
Les étapes sont simples
Etape 1 : installer Groovy
Voir ce lien :
Etape 2 (optionnel): créer un projet Groovy avec Eclipse ou avec STS (Springsource Tool Suite, la version free et conseillée pour ce type de projet)
Télécharger à partir du lien suivant: http://www.springsource.com/products/springsource-tool-suite-download
Etape 3 : ajouter la librairie nécessaire "groovyws-xxxx-0.5.0.jar »
Télécharger à partir de ce lien http://dist.codehaus.org/gmod/groovyws-minimal-0.5.0.jar
Etape 4 : créer le code pour consommer le web service (le WSDL est définie ici)
1: def proxy = new WSClient("http://localhost:8080/webservice-xfire/services/role?wsdl", this.class.classLoader)
2: proxy.initialize()
3: def result = proxy.getRoles()
4: // utilization de la réponse
5: assert result.getClass().name=="com.oxia.att.grails.ArrayOfRole"
6: def role=result.role[0]
7: assert role.name.getClass().name=='javax.xml.bind.JAXBElement'
8: println 'NS ' +role.name.getName()
9: println 'Valeur ' +role.name.getValue()
( l’a classe Role possède une propriété ‘name’)
Explication :
dans ce usage; Groovy se base sur CXF (avec la version SOAP version: 1.1 pour le moment et présente ces deux classes org.apache.cxf.endpoint.dynamic.DynamicClientFactory et groovyx.net.ws.AbstractCXFWSClient getBindingOperationInfo)
en se basant sur le WSDL il va créer dynamiquement les classes nécessaires
Les résultats sont retournés dans un objet crée à la volé (com.oxia.att.grails.ArrayOfRole) et sont de type javax.xml.bind.JAXBElement.
Qui contient le nameSpace : {http://grails.att.oxia.com}nameEt la valeur : admin
Pour ceux qui pensent que la manipulation des résultats n’est pas évidente, il est temps de se rappeler que Groovy vous permet de créer vos propre méthodes de manipulations dynamiquement.
Ça permet de simplifier la manipulation des objets …javax.xml.bind.JAXBElement
C'est ici que se manifeste la puissance de Groovy en tant que langage dynamqiue avec sa capacité à manipuler les Closures ..
Mais ceci est autre sujet …
Lien utile:autres sujets : Groovy & Grails
0 commentaires :
Enregistrer un commentaire