Usa Retrofit en Android con Kotlin

Kevin Morales
5 min readFeb 17, 2024

¡Hola amig@! Mi nombre es Kevin Morales y soy desarrollador mobile por más de 7 años. Hoy te hablaré sobre un tema que estoy seguro de que como desarrollador Android lo vas a tener que usar todos los días, es decir, a cómo traer datos desde un servidor, las famosas peticiones HTTP.

Para ello usaremos una librería llamada Retrofit, la cual es por excelencia la mejor para traer flujo de datos. Empezaremos con un poco de conceptos y que son las peticiones HTTP para entender bien los ejemplos que se implementarán.

Consumir servicios en Android implica interactuar con servicios web para enviar y recibir datos. Los servicios web pueden proporcionar datos en diversos formatos, como JSON o XML, y se pueden acceder mediante diferentes protocolos, como HTTP. En Android, una forma común de consumir servicios web es utilizando bibliotecas como Retrofit y HttpClient.

Peticiones HTTP

Las peticiones HTTP (Protocolo de Transferencia de Hipertexto) son mensajes que se envían entre un cliente (como un navegador web o una aplicación móvil) y un servidor para solicitar o enviar datos. Estas solicitudes y respuestas se utilizan para la comunicación en la World Wide Web y son fundamentales para la transferencia de información en internet.

El protocolo HTTP sigue un modelo de cliente-servidor, donde el cliente realiza solicitudes y el servidor responde proporcionando los datos solicitados.

GET

Solicita datos desde un recurso específico. Especialmente usado para obtener información, como leer una página web o recuperar datos de un servicio web.

POST

Envía datos al servidor para ser procesados. Los datos se incluyen en el cuerpo de la solicitud. Un uso general es enviar información al servidor para ser procesada y almacenada, como enviar datos de un formulario.

PUT

Actualiza un recurso existente o crea uno si no existe. Los datos se incluyen en el cuerpo de la solicitud. El uso general es actualizar información existente en el servidor, como modificar el contenido de un artículo.

DELETE

Elimina un recurso específico en el servidor y su utilización general es eliminar información o recursos en el servidor, como eliminar una entrada de una base de datos.

Retrofit

Es una biblioteca de cliente HTTP para Android y Java, desarrollada por Square, que simplifica el proceso de realizar solicitudes a servicios web RESTful. Proporciona una interfaz fácil de usar para definir y ejecutar solicitudes HTTP.

Para poder implementar esta librería en nuestro proyecto Android, debemos agregar las siguientes líneas al Gradle. Las cuales son la primera línea, la librería como tal para consumir servicios y la segunda línea para parsear datos a JSON una vez vengan del servidor.

implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

Ahora sí, implementaremos un ejemplo, el cual traiga datos de una página web con dummies.

Implementación

Una vez agregada la librería, continuaremos realizando un ejemplo, el cual trae un artículo basado en un id. Generaremos una interfaz la cual contiene el código base del GET. Para ello usaremos la página https://jsonplaceholder.typicode.com/ como proveedora de datos dummies para probar nuestro ejercicio.

interface ApiService {
@GET("posts/{id}")
suspend fun getPost(@Path("id") postId: Int): Post
}

Una vez creada la interfaz, crearemos una función la cual integre estas variables, la primera, es retrofit, la cual contendrá la construcción de la url y configuraciones y la segunda es el servicio generado.

val retrofit = Retrofit.Builder()
.baseUrl("https://jsonplaceholder.typicode.com/")
.addConverterFactory(GsonConverterFactory.create())
.build()

val apiService = retrofit.create(ApiService::class.java)

Por último lanzaremos una corrutina la cual llamará al la URL ya configurada y tendremos un catch por si existe un error del servicio. Esto lo que hará es traer el artículo con el id = 1, es decir, el primer artículo de la lista de artículos de la página de dummies.

lifecycleScope.launch {
try {
val post = apiService.getPost(1)
// Hacer algo con el post obtenido
print(post)
} catch (e: Exception) {
// Manejo de los errores del servidor
}
}

Con este ejemplo, aprendiste como traer datos desde un servidor, ahora te invito a que lo realices ejemplos con POST, PUT o DELETE en tus futuros proyectos o trabajos de aplicaciones móviles con Android.

No olvides tener en cuenta estos consejos generales cuando implementes peticiones HTTP en tus proyectos a futuro.

Hilos y corrutinas

En el lenguaje de programación Kotlin, las corrutinas son una opción poderosa y concisa para manejar operaciones asíncronas. Puedes usar lifecycleScope.launch para lanzar corrutinas en Android.

Manejo de errores

Siempre maneja adecuadamente los errores de red y las respuestas no exitosas. Retrofit proporcionan mecanismos para ello.

Seguridad

Siempre usa conexiones seguras (HTTPS) para proteger la comunicación entre tu aplicación y el servicio web.

Permisos de internet

Asegúrate de agregar el permiso de internet en tu archivo AndroidManifest.xml si tu aplicación necesita acceder a servicios web.

Consumir servicios web en Kotlin para Android puede adaptarse a las necesidades específicas de tu aplicación, y esta librería proporciona herramientas poderosas para facilitar este proceso.

Conclusión

En resumen, simplifica la integración de servicios web en aplicaciones Android mediante una interfaz fácil de usar con Retrofit. Al combinarlo con el lenguaje de programación Kotlin, puedes aprovechar las características concisas y expresivas del lenguaje para hacer que el código sea más legible y mantenible.

Recuerda

Aprende cada día y serás una nueva persona

¡Gracias por leer este artículo, estoy muy emocionado de seguir compartiendo mi conocimiento al mundo entero!

--

--

Kevin Morales

iOS Developer | Android Developer | Mobile Lead | UX & UI in Apps | Software Engineer | Entrepreneur | GDG Guayaquil Organizer | iOS Certified by @Meta