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:
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
Me encontré con este el otro día, aún no lo he probado, pero parece que funciona en Android: http://crest.codegist.org
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.
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.