ドキュメントと API については、プロジェクトの Web サイトを参照してください。
HTTP は、最新のアプリケーションのネットワーク手段です。これが私たちがデータとメディアを交換する方法です。 HTTP を効率的に実行すると、読み込みが速くなり、帯域幅が節約されます。
OkHttp は、デフォルトで効率的な HTTP クライアントです。
OkHttp は、ネットワークに問題がある場合でも持続します。一般的な接続の問題からは黙って回復します。サービスに複数の IP アドレスがある場合、最初の接続が失敗すると、OkHttp は代替アドレスを試みます。これは、IPv4+IPv6 および冗長データセンターでホストされるサービスに必要です。 OkHttp は、最新の TLS 機能 (TLS 1.3、ALPN、証明書の固定) をサポートしています。広範な接続のためにフォールバックするように構成できます。
OkHttp の使用は簡単です。そのリクエスト/レスポンス API は、流暢なビルダーと不変性を備えて設計されています。同期ブロッキング呼び出しとコールバックを伴う非同期呼び出しの両方をサポートします。
OkHttp は、次のような最新の HTTP 仕様に従っています。
仕様があいまいな場合、OkHttp は人気のあるブラウザや一般的な HTTP ライブラリなどの最新のユーザー エージェントに従います。
OkHttp は原則に基づいており、特にそのような構成がバグのあるサーバーの回避、無効なシナリオのテスト、または関連する RFC に矛盾する構成である場合に、過度に構成可能になることを避けます。このギャップを埋める他の HTTP ライブラリが存在し、無効なリクエストを含む広範なカスタマイズが可能になります。
例の制限事項
このプログラムは URL をダウンロードし、その内容を文字列として出力します。完全なソース。
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 ();
}
}
このプログラムはデータをサービスに投稿します。完全なソース。
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 ();
}
}
さらなる例は、OkHttp Recipes ページにあります。
OkHttp は Android 5.0 以降 (API レベル 21 以降) および Java 8 以降で動作します。
OkHttp は、高パフォーマンス I/O と Kotlin 標準ライブラリのために okio に依存しています。どちらも強力な下位互換性を備えた小さなライブラリです。
OkHttp を最新の状態に保つことを強くお勧めします。 Web ブラウザの自動更新と同様、HTTPS クライアントを最新の状態に保つことは、潜在的なセキュリティ問題に対する重要な防御手段となります。動的な TLS エコシステムを追跡し、OkHttp を調整して接続とセキュリティを向上させます。
OkHttp は、プラットフォームの組み込み TLS 実装を使用します。 Java プラットフォームでは、OkHttp は BoringSSL を Java と統合する Conscrypt もサポートしています。 OkHttp が最初のセキュリティ プロバイダーである場合、OkHttp は Conscrypt を使用します。
Security . insertProviderAt ( Conscrypt . newProvider (), 1 );
OkHttp 3.12.x
ブランチは、Android 2.3 以降 (API レベル 9 以降) および Java 7 以降をサポートします。これらのプラットフォームは TLS 1.2 をサポートしていないため、使用しないでください。
変更ログにはリリース履歴が含まれています。
最新リリースは Maven Central で入手できます。
implementation( " com.squareup.okhttp3:okhttp:4.12.0 " )
スナップショット ビルドが利用可能です。 R8 ルールと ProGuard ルールが利用可能です。
また、OkHttp アーティファクトを最新の状態に保ち、バージョンの互換性を確認するのに役立つ部品表 (BOM) も用意しています。
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 には、HTTP、HTTPS、および HTTP/2 クライアントをテストするためのライブラリが含まれています。
最新リリースは Maven Central で入手できます。
testImplementation( " com.squareup.okhttp3:mockwebserver:4.12.0 " )
MockWebServer は、まず内部テストと、OkHttp クライアントを使用したアプリの基本テストに使用されます。これは、スタンドアロンで開発されたフル機能の HTTP テスト ライブラリではありません。新しい機能については積極的に開発されていません。そのため、ニーズが MockWebServer を超えて大きくなり、MockServer などのよりフル機能のテスト ライブラリを使用する必要があるかもしれません。
Graal https://www.graalvm.org/ を使用したネイティブ イメージの構築は自動的に機能するはずです。これは現在最終リリース バージョンではないため、 5.0.0-alpha.2
使用する必要があります。発見したバグや回避策を報告してください。
ビルド例については、okcurl モジュールを参照してください。
$ ./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.