Il existe une bibliothèque étonnamment agréable pour Android HTTP, disponible sur le lien ci-dessous :
http://loopj.com/Android-async-http/
Les demandes simples sont très faciles :
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://www.google.com", new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
System.out.println(response);
}
});
Pour envoyer JSON (crédit à `voidberg' à https://github.com/loopj/Android-async-http/issues/125 ) :
// params is a JSONObject
StringEntity se = null;
try {
se = new StringEntity(params.toString());
} catch (UnsupportedEncodingException e) {
// handle exceptions properly!
}
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
client.post(null, "www.example.com/objects", se, "application/json", responseHandler);
Tout est asynchrone, fonctionne bien avec Android et peut être appelé en toute sécurité depuis le fil d'exécution de l'interface utilisateur. Le responseHandler sera exécuté sur le même thread que celui à partir duquel vous l'avez créé (typiquement, votre thread UI). Il y a même un resonseHandler intégré pour JSON, mais je préfère utiliser google gson.