このプロジェクトについて

OkHttpはJVM、Android、GraalVM向けのHTTPクライアントライブラリである。READMEによれば、デフォルトで効率的に設計されている:HTTP/2対応により同じホストへのリクエストがソケットを共有でき、コネクションプールはHTTP/2が利用できない場合にリクエスト遅延を削減し、透過的GZIPはダウンロードサイズを縮小し、レスポンスキャッシュは繰り返しリクエストに対してネットワークアクセスを回避する。 本ライブラリは不安定なネットワークでも回復力があるとされる。一般的な接続問題から静かに回復し、サービスに複数のIPアドレスがある場合は最初の接続が失敗したときに代替アドレスを試行する。これはREADMEでIPv4+IPv6や冗長データセンターのサービスに有用であるとされている。 APIは流れるようなビルダーと不変のリクエスト/レスポンスオブジェクトを使用し、同期ブロッキング呼び出しとコールバックによる非同期呼び出しの両方をサポートする。READMEにはURLのダウンロードやJSONのPOSTに関する短い例が含まれ、より多くのレシピページへの参照がある。 OkHttpは現代のHTTP仕様、すなわちRFC 9110(HTTPセマンティクス)、RFC 9111(キャッシング)、RFC 9112(HTTP/1.1)、RFC 9113(HTTP/2)、RFC 6455(WebSockets)、WHATWGサーバー送信イベント仕様に従う。仕様があいまいな場合は現代のユーザーエージェントの挙動に従う。またOkHttpはバグのあるサーバーへの対処や無効なシナリオを回避するための過剰な設定を意図的に避けるとされている。 要件:Android 5.0+(APIレベル21+)およびJava 8+。AndroidではAndroidX Startupを使用し、マニフェストで初期化子が無効になっている場合はApplication.onCreateでOkHttp.initialize(applicationContext)を呼び出す必要がある。高パフォーマンスI/OのOkioおよびKotlin標準ライブラリに依存する。セキュリティ問題への対策として最新版に保つことが推奨され、プラットフォーム組み込みのTLS実装を使用し、Conscryptが最初のセキュリティプロバイダである場合はJavaプラットフォームで任意のConscryptサポートが利用可能である。レガシーな3.12.xブランチはAndroid 2.3+およびJava 7+をサポートするが、それらのプラットフォームはTLS 1.2を持たないため使用すべきでない。 配布はMaven Central経由で行われ、バージョン整合性のためのBOM、R8/ProGuardルール、スナップショットビルドが含まれる。OkHttpはKotlin Multiplatformプロジェクトとして公開されており、Mavenプロジェクトではokhttp-jvmとokhttp-androidのいずれかを選択する必要がある(okhttpアーティファクトはMavenプロジェクトでは空である)。OkHttp 5.2+はJava 9モジュールを実装し、安定した公開モジュールとしてokhttp3、okhttp3.brotli、okhttp3.coroutines、okhttp3.dnsoverhttps、okhttp3.logging、okhttp3.sse、okhttp3.tls、okhttp3.urlconnection、mockwebserver3およびそのJUnit 4/5版がリストされている。 MockWebServerはHTTP、HTTPS、HTTP/2クライアントのテスト用に含まれる。READMEによれば主に内部テストおよびOkHttpクライアントを使用するアプリの基本テストに使用され、フル機能のスタンドアロンHTTPテストライブラリではなく、新機能のアクティブな開発も行われていないとされる。ユーザーは使いこなせなくなりMockServerなどの代替を検討することがある。GraalVMネイティブイメージビルドは自動的に動作し、okcurlモジュールが例として挙げられる。本プロジェクトはApache License 2.0の下でSquare, Inc.の著作権によりライセンスされている。