Há uma biblioteca surpreendentemente boa para Android HTTP disponível no link abaixo:
http://loopj.com/android-async-http/
Solicitações simples são muito fáceis:
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 para `voidberg 'em 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);
É tudo assíncrono, funciona bem com Android e é seguro para fazer chamadas a partir do thread de interface do usuário. O responseHandler será executado no mesmo thread a partir do qual você o criou (normalmente, seu thread de IU). Ele ainda tem um resonseHandler integrado para JSON, mas eu prefiro usar o google gson.