¿Cómo realizar solicitudes de red usando la biblioteca Retrofit?
sobes.tech AI
Respuesta de la IA
-
Agregar dependencia: En
build.gradle(app).// Retrofit implementation 'com.squareup.retrofit2:retrofit:<latest_version>' implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // o otro convertidor -
Crear interfaz API: Definir métodos para cada solicitud de red.
interface ApiService { @GET("users/{id}") Call<User> getUser(@Path("id") int userId); @POST("users") Call<User> createUser(@Body User user); }@GET,@POST, y otras anotaciones definen el tipo de método HTTP."users/{id}"- ruta relativa al recurso.@Path,@Query,@Body- anotaciones para los parámetros de la solicitud.Call<T>- tipo de valor de retorno para solicitudes asíncronas o síncronas.
-
Crear instancia de Retrofit: Configurar la URL base y agregar un convertidor.
Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) // Usar Gson para parsear JSON .build(); ApiService apiService = retrofit.create(ApiService.class); -
Realizar la solicitud: De forma asíncrona o síncrona.
De forma asíncrona (recomendado para el hilo de UI):
Call<User> call = apiService.getUser(123); call.enqueue(new Callback<User>() { @Override public void onResponse(Call<User> call, Response<User> response) { if (response.isSuccessful()) { User user = response.body(); // Procesar respuesta exitosa } else { // Procesar error de respuesta (por ejemplo, 404, 500) } } @Override public void onFailure(Call<User> call, Throwable t) { // Procesar error de red o excepción } });De forma síncrona (no usar en hilo de UI):
try { Response<User> response = apiService.getUser(123).execute(); if (response.isSuccessful()) { User user = response.body(); // Procesar respuesta exitosa } else { // Procesar error de respuesta } } catch (IOException e) { // Procesar error } -
Procesar la respuesta: En los métodos
onResponseo después deexecuteexitoso. Verificar el estado de la respuesta (response.isSuccessful()) y extraer los datos (response.body()). Procesar errores enonFailureo en el bloquecatchen solicitudes síncronas.
Retrofit también soporta integración con corutinas (con retrofit2:retrofit2-kotlin-coroutines-adapter), RxJava (con retrofit2:adapter-rxjava), y otras bibliotecas para programación asíncrona.