注釈付きインターフェースのメソッドをネットワークリクエストに変換する、Android・Java向けの型安全なHTTPクライアント。
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
Gradle のビルドに OkHttp の依存関係を追加する
implementation("com.squareup.okhttp3:okhttp:5.5.0") - 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 の数値は毎日更新されます。
関連プロジェクト
Cで書かれた、高性能なWebサーバー、リバースプロキシ、ロードバランサー、APIゲートウェイ、コンテンツキャッシュ。
HTTP/1、HTTP/2、WebSocketの通信を調査できる、コンソール・コマンドライン・Webインターフェースを備えたTLS対応の対話型HTTPプロキシ。
サーバーからTLS/SSL証明書を抽出し、PEM、DER、truststoreとして出力するCLIツール。
独自ドメインとサーバーを使って、localhostのサービスをインターネットに公開するGo製セルフホスト型トンネル。
サービス通信、ディスカバリー、トラフィック管理を実現するRPC・マイクロサービスフレームワーク、Apache DubboのJava実装。