¿Qué es OkHttp y para qué sirve?
\n\nOkHttp es una potente y eficiente biblioteca HTTP para JVM (Java Virtual Machine), Android y Kotlin/Native, desarrollada por la empresa Square. Proporciona una API conveniente para realizar solicitudes HTTP y procesar respuestas. OkHttp es el estándar de facto para trabajar con redes en el ecosistema Android y se utiliza activamente en aplicaciones Kotlin del lado del servidor.
\n\n¿Por qué usar OkHttp en lugar de las herramientas estándar de Java (HttpURLConnection)?
\n- \n
- Simplicidad y comodidad: Una API limpia y fluida (fluent) que es fácil de leer y escribir. \n
- Rendimiento: Soporte integrado para HTTP/2, compresión automática de respuestas (gzip), grupo de conexiones (connection pooling) y almacenamiento en caché. \n
- Fiabilidad: Reintentos automáticos de solicitudes en caso de fallos de red, resistencia a errores de DNS y TLS. \n
- Flexibilidad: Interceptores (interceptors) fácilmente configurables para registro, autenticación, modificación de solicitudes y respuestas. \n
- Capacidad de prueba: Posibilidad de reemplazar la capa de red con MockWebServer. \n
OkHttp es ideal para aplicaciones Android, clientes de API REST, microservicios y cualquier otro proyecto en Kotlin que requiera un trabajo con HTTP fiable y rápido.
\n\nInstalación
\n\nOkHttp se distribuye a través de Maven Central. Para agregarlo a un proyecto, utilice el sistema de compilación Gradle (el más común para Kotlin).
\n\nPara un proyecto Android / Kotlin/JVM (build.gradle.kts):
\ndependencies {\n implementation("com.squareup.okhttp3:okhttp:4.12.0")\n // Para registro (opcional)\n implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")\n}\n\nPara un proyecto Android / Kotlin/JVM (build.gradle):
\ndependencies {\n implementation 'com.squareup.okhttp3:okhttp:4.12.0'\n implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0'\n}\n\nPara Maven (pom.xml):
\n<dependency>\n <groupId>com.squareup.okhttp3</groupId>\n <artifactId>okhttp</artifactId>\n <version>4.12.0</version>\n</dependency>\n\nImportante: Asegúrese de que la versión de OkHttp sea compatible con su versión de Kotlin. La versión actualizada siempre se puede encontrar en MVNRepository.
\n\nInicio rápido
\n\nEl ejemplo más simple es realizar una solicitud GET y obtener el cuerpo de la respuesta como una cadena.
\n\nimport okhttp3.OkHttpClient\nimport okhttp3.Request\nimport java.io.IOException\n\nfun main() {\n // 1. Creamos el cliente (normalmente uno para toda la aplicación)\n val client = OkHttpClient()\n\n // 2. Construimos la solicitud\n val request = Request.Builder()\n .url("https://api.github.com/users/octocat")\n .build()\n\n // 3. Ejecutamos la solicitud de forma síncrona (bloquea el hilo actual)\n client.newCall(request).execute().use { response ->\n if (!response.isSuccessful) {\n throw IOException("Código inesperado $response")\n }\n // 4. Obtenemos el cuerpo de la respuesta\n println(response.body?.string())\n }\n}\n\nExplicación:
\n- \n
OkHttpClient()— crea una instancia del cliente. Es seguro para subprocesos, por lo que se recomienda crear una única instancia y reutilizarla. \n Request.Builder()— utiliza el patrón "Constructor" (Builder) para configurar la solicitud. \n client.newCall(request)— crea una nueva llamada (Call) que se puede ejecutar de forma síncrona (execute()) o asíncrona (enqueue()). \n response.use { ... }— garantiza que los recursos de la respuesta (cuerpo, conexión) se cierren después de su uso. \n response.body?.string
También en la biblioteca
Rate Limiting en Swift: gestión de la frecuencia de solicitudes en iOS/macOS
Matchers de Catch2 en C++: guía completa con ejemplos
Thymeleaf para Java: guía completa con ejemplos
TypeDoc para TypeScript: guía completa con ejemplos