Retrofit 2

Retrofit es un cliente REST para Android y Java que se basa en los interfaces Java para facilitarnos su programación.
Dependencia gradle
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
Ejemplo
Vamos a modificar la aplicación anterior pero ahora usaremos retrofit 2 para cargar los datos de nuestra listView usando un servicio REST
Vamos a utilizar la siguiente página que tiene servicios públicos para probar servicios con datos fake JsonPlaceHolder
La url del servicio : https://jsonplaceholder.typicode.com/users
1) Definamos una interfaz , que va a tener un método obtenerUsuarios , el mismo va a devolver una lista de usuarios.
Podemos utilizar los verbos conocidos para servicios REST
GET
POST
PUT
DELETE
Nosotros vamos a utilizar el método GET para obtener todos los usuarios.
public interface UsuarioService {
@GET("users")
Call<List<Usuario>> getAllUsers();
}
@GET : Anotación para definir el método que queremos llamar, lo mismo para post,put,delete
2) En nuestra activity principal, vamos a crear un método para crear un cliente del servicio.
private UsuarioService crearServicio(){
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://jsonplaceholder.typicode.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
return retrofit.create(UsuarioService.class);
}
3) En nuestra activity principal, vamos a crear un metodo obtenerTodosLosUsuarios, que va a utilizar el servicio para obtener los datos y llenar la listview.
private void obtenerTodosLosUsuarios(){
UsuarioService usuarioService = crearServicio();
Call<List<Usuario>> listUsuarios = usuarioService.getAllUsers();
listUsuarios.enqueue(new Callback<List<Usuario>>() {
@Override
public void onResponse(Call<List<Usuario>> call, Response<List<Usuario>> response) {
if (response.isSuccessful()) {
UsuarioAdapter usuarioAdapter = new UsuarioAdapter(response.body());
listView.setAdapter(usuarioAdapter);
}else{
Toast.makeText(getApplicationContext(), "Error al obtener los datos del servicio", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<List<Usuario>> call, Throwable t) {
Toast.makeText(getApplicationContext(), "Error al obtener los datos del servicio", Toast.LENGTH_SHORT).show();
}
});
}

Last updated
Was this helpful?