Consultez le site Web du projet pour la documentation et les API.
HTTP est le mode de mise en réseau des applications modernes. C'est ainsi que nous échangeons des données et des médias. Utiliser HTTP efficacement accélère le chargement de vos données et économise de la bande passante.
OkHttp est un client HTTP efficace par défaut :
OkHttp persévère lorsque le réseau est problématique : il se remettra silencieusement des problèmes de connexion courants. Si votre service possède plusieurs adresses IP, OkHttp tentera d'autres adresses si la première connexion échoue. Ceci est nécessaire pour IPv4+IPv6 et les services hébergés dans des centres de données redondants. OkHttp prend en charge les fonctionnalités TLS modernes (TLS 1.3, ALPN, épinglage de certificat). Il peut être configuré pour bénéficier d’une connectivité étendue.
Utiliser OkHttp est simple. Son API de requête/réponse est conçue avec des constructeurs fluides et immuables. Il prend en charge à la fois les appels de blocage synchrones et les appels asynchrones avec rappels.
OkHttp suit les spécifications HTTP modernes telles que
Lorsque la spécification est ambiguë, OkHttp suit les agents utilisateurs modernes tels que les navigateurs populaires ou les bibliothèques HTTP courantes.
OkHttp est fondé sur des principes et évite d'être trop configurable, en particulier lorsqu'une telle configuration vise à contourner un serveur bogué, à tester des scénarios invalides ou qui contredisent la RFC pertinente. Il existe d'autres bibliothèques HTTP qui comblent cette lacune, permettant une personnalisation étendue, y compris des requêtes potentiellement invalides.
Exemples de limites
Ce programme télécharge une URL et imprime son contenu sous forme de chaîne. Source complète.
OkHttpClient client = new OkHttpClient ();
String run ( String url ) throws IOException {
Request request = new Request . Builder ()
. url ( url )
. build ();
try ( Response response = client . newCall ( request ). execute ()) {
return response . body (). string ();
}
}
Ce programme publie des données sur un service. Source complète.
public static final MediaType JSON = MediaType . get ( "application/json" );
OkHttpClient client = new OkHttpClient ();
String post ( String url , String json ) throws IOException {
RequestBody body = RequestBody . create ( json , JSON );
Request request = new Request . Builder ()
. url ( url )
. post ( body )
. build ();
try ( Response response = client . newCall ( request ). execute ()) {
return response . body (). string ();
}
}
D'autres exemples se trouvent sur la page Recettes OkHttp.
OkHttp fonctionne sur Android 5.0+ (niveau API 21+) et Java 8+.
OkHttp dépend d'Okio pour les E/S hautes performances et de la bibliothèque standard Kotlin. Les deux sont de petites bibliothèques avec une forte compatibilité ascendante.
Nous vous recommandons fortement de garder OkHttp à jour. Comme pour les navigateurs Web à mise à jour automatique, rester à jour avec les clients HTTPS constitue une défense importante contre les problèmes de sécurité potentiels. Nous suivons l'écosystème TLS dynamique et ajustons OkHttp pour améliorer la connectivité et la sécurité.
OkHttp utilise l'implémentation TLS intégrée à votre plateforme. Sur les plateformes Java, OkHttp prend également en charge Conscrypt, qui intègre BoringSSL à Java. OkHttp utilisera Conscrypt s'il s'agit du premier fournisseur de sécurité :
Security . insertProviderAt ( Conscrypt . newProvider (), 1 );
La branche OkHttp 3.12.x
prend en charge Android 2.3+ (niveau API 9+) et Java 7+. Ces plates-formes ne prennent pas en charge TLS 1.2 et ne doivent pas être utilisées.
Notre journal des modifications contient un historique des versions.
La dernière version est disponible sur Maven Central.
implementation( " com.squareup.okhttp3:okhttp:4.12.0 " )
Des versions d’instantanés sont disponibles. Les règles R8 et ProGuard sont disponibles.
De plus, nous disposons d'une nomenclature (BOM) pour vous aider à maintenir les artefacts OkHttp à jour et à vous assurer de la compatibilité des versions.
dependencies {
// define a BOM and its version
implementation(platform( " com.squareup.okhttp3:okhttp-bom:4.12.0 " ))
// define any required OkHttp artifacts without version
implementation( " com.squareup.okhttp3:okhttp " )
implementation( " com.squareup.okhttp3:logging-interceptor " )
}
OkHttp inclut une bibliothèque pour tester les clients HTTP, HTTPS et HTTP/2.
La dernière version est disponible sur Maven Central.
testImplementation( " com.squareup.okhttp3:mockwebserver:4.12.0 " )
MockWebServer est utilisé principalement pour les tests internes et pour les tests de base des applications à l'aide du client OkHttp. Il ne s’agit pas d’une bibliothèque de tests HTTP complète développée de manière autonome. Il n'est pas activement développé pour de nouvelles fonctionnalités. En tant que tel, vous constaterez peut-être que vos besoins dépassent MockWebServer et vous pouvez utiliser une bibliothèque de tests plus complète telle que MockServer.
Construire vos images natives avec Graal https://www.graalvm.org/ devrait fonctionner automatiquement. Ce n'est pas actuellement dans une version finale publiée, donc 5.0.0-alpha.2
doit être utilisé. Veuillez signaler tout bug ou solution de contournement que vous trouvez.
Voir le module okcurl pour un exemple de construction.
$ ./gradlew okcurl:nativeImage
$ ./okcurl/build/graal/okcurl https://httpbin.org/get
Copyright 2019 Square, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.