Dokumentation und APIs finden Sie auf der Projektwebsite.
HTTP ist die Art und Weise, wie moderne Anwendungen vernetzt werden. So tauschen wir Daten und Medien aus. Wenn Sie HTTP effizient nutzen, werden Ihre Inhalte schneller geladen und Bandbreite gespart.
OkHttp ist ein HTTP-Client, der standardmäßig effizient ist:
OkHttp bleibt bestehen, wenn das Netzwerk Probleme hat: Es erholt sich stillschweigend von häufigen Verbindungsproblemen. Wenn Ihr Dienst über mehrere IP-Adressen verfügt, versucht OkHttp alternative Adressen, wenn die erste Verbindung fehlschlägt. Dies ist für IPv4+IPv6 und Dienste erforderlich, die in redundanten Rechenzentren gehostet werden. OkHttp unterstützt moderne TLS-Funktionen (TLS 1.3, ALPN, Zertifikat-Pinning). Es kann so konfiguriert werden, dass es für eine breite Konnektivität zurückgreift.
Die Verwendung von OkHttp ist einfach. Seine Anfrage-/Antwort-API ist mit fließenden Buildern und Unveränderlichkeit ausgestattet. Es unterstützt sowohl synchrone Blockierungsaufrufe als auch asynchrone Aufrufe mit Rückrufen.
OkHttp folgt modernen HTTP-Spezifikationen wie
Wenn die Spezifikation nicht eindeutig ist, folgt OkHttp modernen Benutzeragenten wie gängigen Browsern oder gängigen HTTP-Bibliotheken.
OkHttp ist prinzipiell und vermeidet übermäßige Konfigurierbarkeit, insbesondere wenn eine solche Konfiguration dazu dient, einen fehlerhaften Server zu umgehen, ungültige Szenarien zu testen oder dem relevanten RFC zu widersprechen. Es gibt andere HTTP-Bibliotheken, die diese Lücke schließen und umfangreiche Anpassungen einschließlich potenziell ungültiger Anforderungen ermöglichen.
Beispiele für Einschränkungen
Dieses Programm lädt eine URL herunter und gibt ihren Inhalt als Zeichenfolge aus. Vollständige Quelle.
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 ();
}
}
Dieses Programm sendet Daten an einen Dienst. Vollständige Quelle.
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 ();
}
}
Weitere Beispiele finden Sie auf der Seite „OkHttp-Rezepte“.
OkHttp funktioniert auf Android 5.0+ (API-Level 21+) und Java 8+.
OkHttp ist für Hochleistungs-I/O auf Okio und die Kotlin-Standardbibliothek angewiesen. Bei beiden handelt es sich um kleine Bibliotheken mit starker Abwärtskompatibilität.
Wir empfehlen Ihnen dringend, OkHttp auf dem neuesten Stand zu halten. Wie bei sich automatisch aktualisierenden Webbrowsern ist es ein wichtiger Schutz vor potenziellen Sicherheitsproblemen, auch bei HTTPS-Clients auf dem neuesten Stand zu bleiben. Wir verfolgen das dynamische TLS-Ökosystem und passen OkHttp an, um Konnektivität und Sicherheit zu verbessern.
OkHttp verwendet die integrierte TLS-Implementierung Ihrer Plattform. Auf Java-Plattformen unterstützt OkHttp auch Conscrypt, das BoringSSL mit Java integriert. OkHttp verwendet Conscrypt, wenn es der erste Sicherheitsanbieter ist:
Security . insertProviderAt ( Conscrypt . newProvider (), 1 );
Der Zweig OkHttp 3.12.x
unterstützt Android 2.3+ (API-Level 9+) und Java 7+. Diese Plattformen unterstützen TLS 1.2 nicht und sollten nicht verwendet werden.
Unser Änderungsprotokoll enthält einen Veröffentlichungsverlauf.
Die neueste Version ist auf Maven Central verfügbar.
implementation( " com.squareup.okhttp3:okhttp:4.12.0 " )
Snapshot-Builds sind verfügbar. Es stehen R8- und ProGuard-Regeln zur Verfügung.
Außerdem verfügen wir über eine Stückliste (BOM), die Ihnen dabei hilft, OkHttp-Artefakte auf dem neuesten Stand zu halten und die Versionskompatibilität sicherzustellen.
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 enthält eine Bibliothek zum Testen von HTTP-, HTTPS- und HTTP/2-Clients.
Die neueste Version ist auf Maven Central verfügbar.
testImplementation( " com.squareup.okhttp3:mockwebserver:4.12.0 " )
MockWebServer wird zunächst für interne Tests und für grundlegende Tests von Apps mithilfe des OkHttp-Clients verwendet. Es handelt sich nicht um eine voll funktionsfähige HTTP-Testbibliothek, die eigenständig entwickelt wird. Es wird nicht aktiv für neue Funktionen weiterentwickelt. Daher kann es sein, dass Ihre Anforderungen über MockWebServer hinausgehen und Sie möglicherweise eine umfassendere Testbibliothek wie MockServer verwenden.
Das Erstellen Ihrer nativen Bilder mit Graal https://www.graalvm.org/ sollte automatisch funktionieren. Da es sich derzeit nicht um eine endgültige veröffentlichte Version handelt, sollte 5.0.0-alpha.2
verwendet werden. Bitte melden Sie alle Fehler oder Problemumgehungen, die Sie finden.
Einen Beispielbuild finden Sie im okcurl-Modul.
$ ./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.