Consumir servicios REST en Android, la forma más fácil?

Tengo un servicio REST y quiero consumirlo con Android. El servicio (JAX-RS) publica datos JSON. Así que la pregunta principal es:

  • ¿Hay una buena solución lista para usar para Android, si no, qué más se puede recomendar?
  • Me gustaría transferir POJOs, ¿cómo podría darme cuenta? ¿Es GSON un enfoque adecuado?

Gracias

Desde el nivel 8 de la API, puedes usar AndroidHTTPClient , o para las API anteriores puedes usar DefaultHttpClient sin problemas y enviar datos mediante HttpPost o HttpGet . Para la codificación de datos en JSON , sí GSON es un buen enfoque, pero creo que org.json sería más fácil de usar.

Primavera Android tiene un RestTemplate que es bastante fácil de usar.

http://static.springsource.org/spring-android/docs/1.0.x/reference/html/rest-template.html

Por ejemplo:

 String url = "http://mypretendservice.com/events"; RestTemplate restTemplate = new RestTemplate(); Event[] events = restTemplate.getForObject(url, Event[].class); 

Resteasy-mobile es una solución perfecta (https://github.com/tdiesler/resteasy-mobile)

Es básicamente resteasy soplado completo (que tiene marco de cliente) pero utiliza 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 ejemplo 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 de servicio JAX-RS (PushSVC.java) tanto en Android como en el 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 MessageVO definición

 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 estandarizado está cerca de la inexistencia

Espero que esto ayude a todos.

  • Retrofit 2 @path Vs @query
  • Cómo enviar datos JSON como parámetro de Android a Jersey RESTful Service
  • ¿Es el manejo de llamadas http de servicios de múltiples intenciones buen enfoque?
  • Android: cómo recuperar el objeto JSON en caso de una excepción con RoboSpice
  • Retrofit. Java.net.ProtocolException: esperado * bytes pero recibido *
  • Configuración del tipo de contenido Json para el cliente Rest
  • Android resto cliente a magento
  • Ejemplo de la necesidad del cliente del DESECHO de Androide que implementa el patrón de la ejecución de REST de Virgil Dobjanschi
  • Uso del correo y la contraseña para autenticarse mediante la API REST
  • Marco del servidor REST para Android
  • POST cuerpo JSON utilizando Retrofit
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.