Auteur Sujet: API REST - Client JAVA  (Lu 1233 fois)

lezell

  • Utilisateur
  • *
  • Messages: 3
    • Voir le profil
API REST - Client JAVA
« le: mai 19, 2016, 05:35:23 pm »
Bonjour à tous,

tout d'abord un grand bravo pour ce projet.

Une petite question néanmoins : quelqu'un a-t-il un exemple de client RESTEASY java sous la main ?

Ca m'arrangerait bien plutôt que tout refaire à la main de mon côté sachant que :

j'ai généré les modèles via le plugin maven : org.apache.cxf:cxf-xjc-plugin:3.0.5, j'ai bien obtenu un certain nombre de classes semblant correspondre aux modèles de sortie

La javax.ws.rs.core.Response est bonne (ou mm la récupération via l'entity String.class), c'est sur le type final que se pose le problème.

voila mon client :

ApacheHttpClient4Engine engine = new ApacheHttpClient4Engine(getHttpClient());
ResteasyClient client = new ResteasyClientBuilder().httpEngine(engine).build();
client.register(new AuthHeadersRequestFilter("Token token=\"XXXX\""));
ResteasyWebTarget targetEndPointNetworksAPI = client.target("<my uri>/api/v1/networks.xml");
Networks networks = targetEndPointNetworksAPI.request().get(Networks.class);
for (Network n : networks.getNetworks()) {
    LOG.debug(n.toString());
}

javax.ws.rs.client.ResponseProcessingException: javax.ws.rs.ProcessingException: Unable to find a MessageBodyReader of content-type application/xml;charset=utf-8 and type class fr.cda.modele.transports.chouette.Networks
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:140)
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:444)
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocationBuilder.get(ClientInvocationBuilder.java:165)
at fr.cda.service.transports.impl.SBTransportsImplTest.testChouette(SBTransportsImplTest.java:140)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:243)
at junit.framework.TestSuite.run(TestSuite.java:238)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: javax.ws.rs.ProcessingException: Unable to find a MessageBodyReader of content-type application/xml;charset=utf-8 and type class fr.cda.modele.transports.chouette.Networks
at org.jboss.resteasy.core.interception.ClientReaderInterceptorContext.throwReaderNotFound(ClientReaderInterceptorContext.java:39)
at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.getReader(AbstractReaderInterceptorContext.java:73)
at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:50)
at org.jboss.resteasy.plugins.interceptors.encoding.GZIPDecodingInterceptor.aroundReadFrom(GZIPDecodingInterceptor.java:59)
at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:53)
at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readFrom(ClientResponse.java:248)
at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readEntity(ClientResponse.java:181)
at org.jboss.resteasy.specimpl.BuiltResponse.readEntity(BuiltResponse.java:211)
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:104)
... 22 more

Merci par avance pour votre aide.
« Modifié: mai 19, 2016, 06:22:41 pm par lezell »

lezell

  • Utilisateur
  • *
  • Messages: 3
    • Voir le profil
Re : API REST - Client JAVA
« Réponse #1 le: mai 19, 2016, 08:26:24 pm »
Ma faute, oubli d'une dépendance maven :

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxb-provider</artifactId>
    <version>3.0.16.Final</version>
</dependency>

lezell

  • Utilisateur
  • *
  • Messages: 3
    • Voir le profil
Re : API REST - Client JAVA
« Réponse #2 le: mai 19, 2016, 08:43:24 pm »
Si y'en a qui ont le problème penser à supprimer le fichier package-info.java des classes générées

si vous avez une erreur du type :

Caused by: org.jboss.resteasy.plugins.providers.jaxb.JAXBUnmarshalException: javax.xml.bind.UnmarshalException: élément inattendu (URI : "", local : "Networks"). Les éléments attendus sont