tutorial open from consume java android web-services rest

open - API de cliente REST Java para Android



swagger codegen openapi 3 (5)

Aquí hay un buen ejemplo que contiene códigos fuente de todo, incluidos EJB, RestEasy y Android:

http://code.google.com/p/android-jbridge/

Mi aplicación de servidor expone un servicio web RESTful utilizando JAX-RS (Implementación de Jersey). ¿Cuál es la mejor manera de invocar este servicio (que no sea el uso de Apache HttpClient)? Me preguntaba si las API REST Client de Jersey, Restlet, RESTeasy y otros marcos funcionan en Android.

Gracias, Theo



Para los casos más simples, puede usar java.net.URL y su método openConnection () para realizar una solicitud. Y luego las bibliotecas de enlace de datos (JAXB para XML, Jackson para JSON) manejan la respuesta (y posiblemente soliciten si PUBLICA xml o json).


Si desea un poco más de comodidad que tener que lidiar con URLConnection, consulte Resty para Java. Simple, liviano, pero aún bastante nuevo.

http://beders.github.com/Resty


Resteasy-mobile es una solución perfecta.

Básicamente es resteasy completo (que tiene framework cliente) pero usa Apache HTTP Client en lugar de HttpURLConnection (que no existe en android)

Aquí hay más información sobre el uso (http://docs.jboss.org/resteasy/docs/2.3.1.GA//userguide/html_single/index.html#RESTEasy_Client_Framework)

Aquí está para el maven

<dependency> <groupId>org.jboss.resteasy.mobile</groupId> <artifactId>resteasy-mobile</artifactId> <version>1.0.0</version> </dependency>

Un pequeño código de muestra en el lado de Android

public class RestServices { static RegisterSVC registerSVC; static PushSVC pushSVC; static TrackerSVC trackerSVC; RestServices() { RegisterBuiltin.register(ResteasyProviderFactory.getInstance()); } public static RegisterSVC getRegisterSVC() { return ProxyFactory.create(RegisterSVC.class,"http://143.248.194.236:8080/notification"); } public static PushSVC getPushSVC() { return ProxyFactory.create(PushSVC.class,"http://143.248.194.236:8080/notification"); } public static TrackerSVC getTrackerSVC() { return ProxyFactory.create(TrackerSVC.class,"http://143.248.194.236:8080/notification"); } }

Definición del servicio JAX-RS (PushSVC.java) tanto en el lado de Android como del servidor

@Path("/mobile") public interface PushSVC { /* Sample curl --data ''{"collapseKey":"asdf","contentList":{"aaaa":"you","ssss":"you2"}}'' -X POST -H ''Content-type:application/json'' -v http://localhost:8080/notification/mobile/11111/send */ @POST @Path("/{uuid}/send") @Consumes(MediaType.APPLICATION_JSON) String sendPush( MessageVO message, @PathParam("uuid") String uuid); }

Modelo de definición de MessageVO

public class MessageVO { String collapseKey; HashMap<String, String> contentList; public MessageVO() { } public MessageVO(String collapseKey) { this.collapseKey = collapseKey; contentList = new HashMap<String, String>(); } public void put(String key, String value) { this.contentList.put(key,value); } public String getCollapseKey() { return collapseKey; } public HashMap<String, String> getContentList() { return contentList; } }

Esta es la invocación de método en Android

public class Broadcast extends AsyncTask<Context,Void,Void> { @Override protected Void doInBackground(Context... contexts) { MessageVO message = new MessageVO("0"); message.put("tickerText","Ticker ne` :D"); message.put("contentTitle","Title ne` :D"); message.put("contentText","Content ne` :D"); RestServices.getPushSVC().sendPush(message,TrackInstallation.id(contexts[0]).toString()); return null; } }

Esto es bastante simple y todos los códigos escritos son reutilizables, el código repetitivo está cerca de la inexistencia

Espero que esto ayude a todos.