Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Java REST cliente API para Android

Mi aplicación de servidor expone un servicio web RESTful usando JAX-RS (implementación de Jersey). ¿Cuál es la mejor manera de invocar este servicio (aparte de usar Apache HttpClient)? Me preguntaba si el cliente REST API de Jersey, Restlet, RESTeasy y otros marcos de trabajo en Android.

Gracias, Theo

  • ¿Qué son las constantes de orientación para las vistas?
  • Android - cómo obtener token de acceso de google plus?
  • Android permission.INTERACT_ACROSS_USERS_FULL
  • JmDNS: No se puede resolver el servicio
  • Cómo hacer un doble degradado con XML (iphone like)
  • Patrón para hacer AsyncTask "procedural"
  • En la aplicación de facturación - BillingHelper no completamente instanciado
  • Android: textColor del botón deshabilitado en el selector no se muestra?
  • Android okHttp addFormDataPart dinámicamente para múltiples imágenes
  • Transmisión de blob binario a través de un proveedor de contenido
  • Clase estática en Java (Android) - uso o no uso
  • Cuando utiliza TalkBack, ¿cuál es la forma preferida de alertar al usuario cuando el contenido de un TextView ha cambiado?
  • 5 Solutions collect form web for “Java REST cliente API para Android”

    Resteasy-mobile es una solución perfecta.

    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.

    Si desea un poco más de comodidad que tener que lidiar con URLConnection, echa un vistazo a Resty for Java. Simple, ligero, pero todavía bastante nuevo.

    http://beders.github.com/Resty

    Funcionó en este el otro día, no lo he intentado todavía pensamiento, pero parece trabajar en androide: http://crest.codegist.org

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

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

    Para los casos más simples, sólo puede utilizar 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) para manejar la respuesta (y, posiblemente, solicitar si POST xml o json).

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.