Hay una biblioteca sorprendentemente agradable para HTTP de Android disponible en el siguiente enlace:
http://loopj.com/android-async-http/
Las solicitudes simples son muy fáciles:
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://www.google.com", new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
System.out.println(response);
}
});
Para enviar JSON (crédito a 'voidberg' en 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);
Todo es asincrónico, funciona bien con Android y es seguro llamarlo desde el hilo de la interfaz de usuario. ResponseHandler se ejecutará en el mismo hilo desde el que lo creó (normalmente, su hilo de IU). Incluso tiene un resonseHandler incorporado para JSON, pero prefiero usar google gson.