android: peticiones de red
/índice:
En Android es necesario declarar explícitamente los servicios a los que quiere acceder tu aplicación en AndroidManifest.xml
. Para poder acceder a
Internet debe incluirse: <uses-permission android:name="android.permission.INTERNET"/>
Peticiones HTTP
Para tratar con peticiones REST en Android podemos usar la librería
Android Asynchronous Http Client, añadiendo compile 'com.loopj.android:android-async-http:1.4.9'
al
build.gradle de la app.
Ejemplo de petición GET:
import com.loopj.android.http.AsyncHttpClient;
AsyncHttpClient client = new AsyncHttpClient();
client.addHeader("X-AUTH-TOKEN",settings.getString("token",""));
client.get(
activity,
"https:/api.xxx.xx/v2/resource",
new ResourceResponseHandler(activity)
);
Y tratamiento de su respuesta:
public class ResourceResponseHandler extends AsyncHttpResponseHandler {
private Context context = null;
public ResourceResponseHandler (Context context) {
this.context = context;
}
@Override
public void onSuccess(int statusCode, Header[] header, byte[] bytes) {
Gson gson = new Gson();
ResponseContent content = gson.fromJson (new String(bytes), Response.class);
Toast.makeTtext(this.context, content.getContent(), Toast.LENGTH.LONG).show();
}
@Override
public void onFailure(int statusCode, Header[] header, byte[] bytes, Throwable throwable) {
Log.d("ResourceResponseHandler","Request returned error " + statusCode);
}
}
JSON
Una forma de trabajar con JSON es convertir sus elementos en objetos de Java, mediante librerías como Gson. Se
instala añadiendo compile 'com.google.code.gson:gson:2.8.2'
al build.gradle de la app.
Ejemplo (como el anterior, pero con petición POST):
Gson gson = new Gson();
//Response:
ObjectResponse objectResponse = gson.fromJson(new String(responseBody, ObjectResponse.class));
//Request:
AsyncHttpClient client = new AsyncHttpClient();
try {
client.post(
activity,
"https://api.xxx.xx/something",
new StringEntity(gson.toJson(new ObjectRequest(params))),
"application/json",
new ResourceResponseHandler(activity)
);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
View replies to this post on
[Telegram]
[Telegram]