Resteasy-mobile est une solution parfaite.
C'est essentiellement une version complète de resteasy (qui possède un framework client) mais qui utilise Apache HTTP Client plutôt que HttpURLConnection (qui n'existe pas sur Android)
Voici plus d'informations sur son utilisation (http://docs.jboss.org/resteasy/docs/2.3.1.GA//userguide/html\_single/index.html#RESTEasy\_Client\_Framework)
Voici pour le maven
org.jboss.resteasy.mobile
resteasy-mobile
1.0.0
Un petit code d'exemple du côté 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");
}
}
Définition du service JAX-RS (PushSVC.java) du côté android et du serveur
@Path("/mobile")
public interface PushSVC {
/*
Exemple
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);
}
Définition du modèle MessageVO
public class MessageVO {
String collapseKey;
HashMap contentList;
public MessageVO() {
}
public MessageVO(String collapseKey) {
this.collapseKey = collapseKey;
contentList = new HashMap();
}
public void put(String key, String value)
{
this.contentList.put(key,value);
}
public String getCollapseKey() {
return collapseKey;
}
public HashMap getContentList() {
return contentList;
}
}
Ceci est l'invocation de méthode sur android
public class Broadcast extends AsyncTask
{
@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;
}
}
C'est assez simple et tout le code écrit est réutilisable, le code répétitif est presque inexistant
J'espère que cela aidera tout le monde.