À propos du projet
OkHttp est une bibliothèque cliente HTTP pour JVM, Android et GraalVM. Selon son README, elle est conçue pour être efficace par défaut : le support HTTP/2 permet aux requêtes vers le même hôte de partager un socket, le pool de connexions réduit la latence lorsque HTTP/2 n'est pas disponible, la compression GZIP transparente diminue la taille des téléchargements, et la mise en cache des réponses évite complètement le réseau pour les requêtes répétées.
La bibliothèque est décrite comme résiliente sur les réseaux peu fiables. Elle récupère silencieusement des problèmes de connexion courants, et lorsqu'un service possède plusieurs adresses IP, il tente les adresses alternatives si la première connexion échoue, ce qui le README note comme utile pour IPv4+IPv6 et les services dans des data centers redondants. Il prend en charge les fonctionnalités TLS modernes incluant TLS 1.3, ALPN et l'épinglage de certificats, et peut être configuré pour revenir en arrière afin d'assurer une connectivité étendue.
L'API utilise des constructeurs fluents et des objets requête/réponse immuables, et prend en charge à la fois les appels synchrones bloquants et les appels asynchrones avec callbacks. Le README inclut de courts exemples pour télécharger une URL et poster du JSON vers un serveur, et renvoie vers une page de recettes pour davantage d'exemples.
OkHttp suit les spécifications HTTP modernes, incluant RFC 9110 (sémantique HTTP), RFC 9111 (mise en cache), RFC 9112 (HTTP/1.1), RFC 9113 (HTTP/2), RFC 6455 (WebSockets) et la spécification WHATWG pour les événements serveur. Lorsque les spécifications sont ambiguës, il suit le comportement des agents utilisateur modernes. Le README indique qu'OkHttp évite délibérément d'être trop configurable, en particulier pour contourner des serveurs bogués ou des scénarios invalides, et liste des limitations exemples telles que l'interdiction des requêtes GET avec un corps et le fait de ne pas exposer le cache comme une interface avec des implémentations alternatives.
Configuration requise : Android 5.0+ (niveau API 21+) et Java 8+. Sur Android, il utilise AndroidX Startup ; si l'initialiseur est désactivé dans le manifeste, les applications doivent appeler OkHttp.initialize(applicationContext) dans Application.onCreate. Il dépend de Okio pour les E/S haute performance et de la bibliothèque standard Kotlin. Le README recommande de maintenir OkHttp à jour comme défense contre les problèmes de sécurité, et note qu'il utilise l'implémentation TLS intégrée de la plateforme, avec un support Conscrypt optionnel sur les plateformes Java lorsque Conscrypt est le premier fournisseur de sécurité. Une branche héritée 3.12.x supporte Android 2.3+ et Java 7+, mais ces plateformes dépourvues de TLS 1.2 ne devraient pas être utilisées.
La distribution se fait via Maven Central, avec une bill of materials (BOM) pour l'alignement des versions, des règles R8/ProGuard, et des builds snapshot. OkHttp est publié en tant que projet Kotlin Multiplatform ; les projets Maven doivent choisir entre okhttp-jvm et okhttp-android car l'artefact okhttp est vide dans les projets Maven. OkHttp 5.2+ implémente les modules Java 9, et le README liste les modules publics stables, notamment okhttp3, okhttp3.brotli, okhttp3.coroutines, okhttp3.dnsoverhttps, okhttp3.logging, okhttp3.sse, okhttp3.tls, okhttp3.urlconnection, mockwebserver3 et ses variantes JUnit 4/5.
MockWebServer est inclus pour tester les clients HTTP, HTTPS et HTTP/2. Le README le décrit comme principalement utilisé pour les tests internes et les tests basiques des applications utilisant le client OkHttp, et non comme une bibliothèque de test HTTP complète et autonome, et note qu'il n'est pas activement développé pour de nouvelles fonctionnalités ; les utilisateurs peuvent en dépasser les capacités et considérer des alternatives comme MockServer. Les builds GraalVM native image fonctionnent automatiquement, le module okcurl servant d'exemple. Le projet est sous licence Apache License 2.0, copyright Square, Inc.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.