Sobes.tech
Middle

¿Cómo realizar solicitudes de red usando la biblioteca Retrofit?

sobes.tech AI

Respuesta de la IA

  1. 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
    
  2. 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.
  3. 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);
    
  4. 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
    }
    
  5. Procesar la respuesta: En los métodos onResponse o después de execute exitoso. Verificar el estado de la respuesta (response.isSuccessful()) y extraer los datos (response.body()). Procesar errores en onFailure o en el bloque catch en 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.