Cliente HTTP en Kotlin: haciendo solicitudes correctamente

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a los clientes HTTP en Kotlin



El desarrollo moderno en Kotlin es impensable sin la interacción con APIs remotas y servicios web. Un cliente HTTP es una herramienta fundamental que permite a tu aplicación enviar solicitudes y recibir respuestas de internet. Ya sea que estés creando una aplicación móvil, un backend de servidor o una aplicación de escritorio, saber cómo trabajar correctamente con solicitudes HTTP es una habilidad obligatoria para todo desarrollador de Kotlin.



En este artículo, analizaremos en detalle qué bibliotecas están disponibles para trabajar con HTTP en el ecosistema de Kotlin, cómo realizar solicitudes GET y POST, procesar JSON y gestionar la asincronía. Aprenderás cómo evitar errores típicos y hacer que tu código sea robusto y eficiente.



Bibliotecas principales para clientes HTTP en Kotlin



1. Ktor Client



Ktor es un framework asíncrono moderno, creado por la empresa JetBrains específicamente para Kotlin. Ktor Client admite corrutinas, multiplataforma (JVM, Android, iOS, JS, Native) y proporciona un motor flexible y configurable.



Ejemplo de una solicitud GET básica con Ktor:



import io.ktor.client.*import io.ktor.client.request.*import io.ktor.client.statement.*

suspend fun fetchData(): String { val client = HttpClient() val response: HttpResponse = client.get("https://api.example.com/data") client.close() return response.bodyAsText()}


2. OkHttp



OkHttp es una de las bibliotecas más populares para Java y Android, que funciona perfectamente también con Kotlin. Se destaca por su alto rendimiento, soporte para HTTP/2, pool automático de conexiones e interceptores (interceptors).



Ejemplo de una solicitud GET síncrona con OkHttp:



import okhttp3.OkHttpClientimport okhttp3.Request

fun fetchData(): String { val client = OkHttpClient() val request = Request.Builder() .url("https://api.example.com/data") .build() client.newCall(request).execute().use { response -> return response.body?.string() ?: "" }}


3. Fuel



Fuel es una biblioteca ligera e intuitiva para Kotlin, construida sobre OkHttp. Ofrece un estilo funcional para trabajar con solicitudes y un manejo conveniente de los resultados.



Ejemplo de una solicitud GET con Fuel:



import com.github.kittinunf.fuel.httpGetimport com.github.kittinunf.result.Result

fun fetchData() { "https://api.example.com/data" .httpGet() .responseString { _, _, result -> when (result) { is Result.Success -> println(result.value) is Result.Failure -> println(result.error) } }}


Cómo enviar correctamente solicitudes GET y POST



Solicitudes GET



Las solicitudes GET se utilizan para obtener datos del servidor. Los parámetros de la solicitud generalmente se pasan en la URL. Al usar Ktor, los parámetros se pueden agregar mediante el bloque parameter:



val client = HttpClient()val response = client.get("https://api.example.com/search") {    parameter("query", "Kotlin")    parameter("page", 1)}


Es importante recordar: las solicitudes GET no deben modificar el estado del servidor y no deben contener un cuerpo de solicitud. Todos los datos se transmiten a través de la URL o los encabezados.



Solicitudes POST



Las solicitudes POST están diseñadas para enviar datos al servidor (por ejemplo, crear un nuevo recurso). El cuerpo de la solicitud puede estar en formato JSON, Form URL Encoded o Multipart.



Ejemplo de una solicitud POST con cuerpo JSON a través de Ktor:



import io.ktor.client.request.*import io.ktor.http.*

data class User(val name: String, val email: String)

suspend fun createUser(user: User): String { val client = HttpClient() val response = client.post("https://api.example.com/users") { contentTyp

Blogs

Book Recommendations