Repolode
lysine-dev

lysine-dev/okhttp

接続の再利用、HTTP/2、デフォルトのレスポンスキャッシュに対応した、JVM・Android・GraalVM向けHTTPクライアントです。

スター
47,090
フォーク
9,298
未解決の Issue
148
最終コミット
2 時間前

これは何?

OkHttpは、Java、Kotlin、Androidアプリ向けのHTTPクライアントです。デフォルトで効率よく動作するよう設計されており、HTTP/2では同じホストへのリクエストでソケットを共有できます。HTTP/2を利用できない場合は接続をプールし、レスポンスは自動的にgzip展開されます。また、繰り返し行うリクエストは、ネットワークにアクセスせずレスポンスキャッシュから返せます。

不安定なネットワークにも対応しています。接続先のサービスが複数のIPアドレスに解決される場合、接続に失敗すると別のアドレスを試します。TLS 1.3、ALPN、証明書ピンニングをサポートし、APIには流れるように呼び出せるビルダーと不変のリクエスト/レスポンスオブジェクトを採用しています。呼び出しは同期またはコールバックを使った非同期で実行できます。

このプロジェクトは最新のHTTP仕様(RFC 9110〜9113、WebSocket、Server-Sent Events)に準拠しており、コルーチン、ロギング、SSE、DNS over HTTPS用の関連モジュールと、クライアントのテストに使えるMockWebServerを提供します。Android 5.0以降とJava 8以降で動作し、GraalVMネイティブイメージとしてビルドできます。

主な機能

  • 01接続プールとHTTP/2の多重化により、同じホストへの繰り返しのリクエストでレイテンシを低減します。
  • 02GZIPの自動展開とレスポンスキャッシュにより、重複したダウンロードを避けられます。
  • 03接続に失敗すると、別のIPアドレスを試します。
  • 04TLS 1.3、ALPN、証明書ピンニングをサポートし、JavaではConscryptも利用できます。
  • 05不変のリクエスト/レスポンスを使った、同期・非同期の呼び出しAPIを提供します。
  • 06HTTP、HTTPS、HTTP/2クライアントのテストに使えるMockWebServerが含まれています。

ユースケース

  • Java、Kotlin、AndroidアプリからREST APIやJSON APIを呼び出す。
  • 圧縮やキャッシュで帯域幅を節約しながら、大容量のメディアやファイルをダウンロードする。
  • GraalVMでネイティブのコマンドラインHTTPツールを作成する。
  • モックHTTPサーバーを使った統合テストを作成する。

クイックスタート

  1. 1

    Gradle のビルドに OkHttp の依存関係を追加する

    implementation("com.squareup.okhttp3:okhttp:5.5.0")
  2. 2

    OkHttpClient を作成し、README の「Get a URL」の例を使ってリクエストを送信する

使う前に知っておきたいこと

  • ボディ付きの GET リクエストは許可されていません。
  • レスポンスキャッシュは、別の実装に差し替えられるインターフェースではありません。
  • Maven の設定では okhttp-jvm または okhttp-android を選ぶ必要があります。okhttp アーティファクトは空だからです。

トピック

よくある質問

okhttp とは?
接続の再利用、HTTP/2、デフォルトのレスポンスキャッシュに対応した、JVM・Android・GraalVM向けHTTPクライアントです。 OkHttpは、Java、Kotlin、Androidアプリ向けのHTTPクライアントです。デフォルトで効率よく動作するよう設計されており、HTTP/2では同じホストへのリクエストでソケットを共有できます。HTTP/2を利用できない場合は接続をプールし、レスポンスは自動的にgzip展開されます。また、繰り返し行うリクエストは、ネットワークにアクセスせずレスポンスキャッシュから返せます。
okhttp は無料で使えますか?ライセンスは?
okhttp は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
okhttp は今もメンテナンスされていますか?
活発にメンテナンス中。okhttp の最終コミットは 2026年10月21日 です。
okhttp は何に使えますか?
Java、Kotlin、AndroidアプリからREST APIやJSON APIを呼び出す。 圧縮やキャッシュで帯域幅を節約しながら、大容量のメディアやファイルをダウンロードする。 GraalVMでネイティブのコマンドラインHTTPツールを作成する。 モックHTTPサーバーを使った統合テストを作成する。
okhttp のインストール方法は?
Gradle のビルドに OkHttp の依存関係を追加する: implementation("com.squareup.okhttp3:okhttp:5.5.0") OkHttpClient を作成し、README の「Get a URL」の例を使ってリクエストを送信する
okhttp はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/lysine-dev/okhttp

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト