Sobre el proyecto

OkHttp es una biblioteca de cliente HTTP para JVM, Android y GraalVM. Según su README, está diseñada para ser eficiente de forma predeterminada: el soporte HTTP/2 permite que las solicitudes al mismo host compartan un socket, el agrupamiento de conexiones reduce la latencia cuando HTTP/2 no está disponible, GZIP transparente reduce los tamaños de descarga, y la caché de respuestas evita por completo la red para solicitudes repetidas. La biblioteca se describe como resistente en redes poco confiables. Se recupera silenciosamente de problemas comunes de conexión, y cuando un servicio tiene múltiples direcciones IP, intenta direcciones alternativas si la primera conexión falla, lo cual, según el README, es útil para IPv4+IPv6 y servicios en centros de datos redundantes. Admite funciones TLS modernas, incluido TLS 1.3, ALPN y fijación de certificados, y puede configurarse para retroceder y garantizar conectividad amplia. La API utiliza constructores fluentes y objetos de solicitud/respuesta inmutables, y admite tanto llamadas síncronas de bloqueo como llamadas asíncronas con devoluciones de llamada. El README incluye ejemplos breves para descargar una URL y publicar JSON en un servidor, y señala una página de recetas para más ejemplos. OkHttp sigue las especificaciones HTTP modernas, incluidas RFC 9110 (semántica HTTP), RFC 9111 (caché), RFC 9112 (HTTP/1.1), RFC 9113 (HTTP/2), RFC 6455 (WebSockets) y la especificación WHATWG de eventos enviados por el servidor. Cuando las especificaciones son ambiguas, sigue el comportamiento de los agentes de usuario modernos. El README indica que OkHttp evita deliberadamente ser excesivamente configurable, especialmente para solucionar servidores con errores o escenarios inválidos, y enumera limitaciones de ejemplo, como no permitir GET con cuerpo y no exponer la caché como una interfaz con implementaciones alternativas. Requisitos: Android 5.0+ (nivel de API 21+) y Java 8+. En Android, utiliza AndroidX Startup; si el inicializador está deshabilitado en el manifiesto, las aplicaciones deben llamar a OkHttp.initialize(applicationContext) en Application.onCreate. Depende de Okio para E/S de alto rendimiento y de la biblioteca estándar de Kotlin. El README recomienda mantener OkHttp actualizado como defensa contra problemas de seguridad, y señala que utiliza la implementación TLS integrada de la plataforma, con soporte opcional de Conscrypt en plataformas Java cuando Conscrypt es el primer proveedor de seguridad. Una rama heredada 3.12.x admite Android 2.3+ y Java 7+, pero esas plataformas carecen de TLS 1.2 y no deben usarse. La distribución es a través de Maven Central, con un material de factura (BOM) para alineación de versiones, reglas R8/ProGuard y compilaciones de instantánea. OkHttp se publica como un proyecto Kotlin Multiplatform; los proyectos Maven deben elegir entre okhttp-jvm y okhttp-android porque el artefacto okhttp está vacío en proyectos Maven. OkHttp 5.2+ implementa módulos Java 9, y el README enumera los módulos públicos estables, incluidos okhttp3, okhttp3.brotli, okhttp3.coroutines, okhttp3.dnsoverhttps, okhttp3.logging, okhttp3.sse, okhttp3.tls, okhttp3.urlconnection, mockwebserver3 y sus variantes JUnit 4/5. MockWebServer está incluido para probar clientes HTTP, HTTPS e HTTP/2. El README lo describe como utilizado principalmente para pruebas internas y pruebas básicas de aplicaciones que usan el cliente OkHttp, no como una biblioteca de prueba HTTP completa e independiente, y señala que no se desarrolla activamente para nuevas funciones; los usuarios pueden superarla y considerar alternativas como MockServer. Se dice que las compilaciones de imagen nativa GraalVM funcionan automáticamente, con el módulo okcurl como ejemplo. El proyecto está licenciado bajo la Apache License 2.0, copyright Square, Inc.