Repolode
lysine-dev

lysine-dev/okhttp

面向 JVM、Android 和 GraalVM 的 HTTP 客户端,默认支持连接复用、HTTP/2 和响应缓存。

Star
47,090
Fork
9,298
未关闭 Issue
148
最近提交
8小时前

这是什么?

OkHttp 是一个用于 Java、Kotlin 和 Android 应用的 HTTP 客户端。默认情况下它就注重效率:同一主机的请求可以通过 HTTP/2 共享一个连接,不支持 HTTP/2 时则使用连接池复用连接,响应会自动解压 GZIP,重复请求还可以直接从缓存返回,不必访问网络。

在网络不稳定的情况下,OkHttp 也能自动恢复常见的连接问题。服务有多个 IP 地址时,首选地址连接失败后会尝试其他地址。它支持 TLS 1.3、ALPN 和证书固定,API 采用链式构建器与不可变的请求、响应对象,同时支持同步调用和带回调的异步调用。

项目遵循 RFC 9110 至 9113、WebSocket 和 Server-Sent Events 等 HTTP 规范,并提供协程、日志、SSE、DNS over HTTPS 等扩展模块,以及用于测试客户端的 MockWebServer。它支持 Android 5.0 及以上和 Java 8 及以上,也可以构建为 GraalVM 原生镜像。

核心功能

  • 01连接池与 HTTP/2 多路复用,减少对同一主机的重复请求延迟。
  • 02自动解压 GZIP,并通过响应缓存避免重复下载。
  • 03连接失败时自动尝试同一服务的其他 IP 地址。
  • 04支持 TLS 1.3、ALPN 和证书固定,Java 平台可使用 Conscrypt。
  • 05同时提供同步与异步调用接口,请求和响应对象不可变。
  • 06附带 MockWebServer,用于测试 HTTP、HTTPS 和 HTTP/2 客户端。

适用场景

  • 在 Java、Kotlin 或 Android 应用中调用 REST 或 JSON 接口。
  • 下载大体积媒体或文件,借助压缩和缓存节省带宽。
  • 使用 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 构件在 Maven 中为空。

标签

常见问题

okhttp 是什么?
面向 JVM、Android 和 GraalVM 的 HTTP 客户端,默认支持连接复用、HTTP/2 和响应缓存。 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 或 JSON 接口。 下载大体积媒体或文件,借助压缩和缓存节省带宽。 使用 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

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目