OkHttp for Java:新一代 HTTP 客户端
\n\n1. 什么是 OkHttp 以及为什么需要它
\n\nOkHttp 是由 Square 公司开发的一款适用于 Java 和 Android 的现代、高效的 HTTP 库。它已成为 Android 生态系统中执行网络请求的事实标准,并广泛应用于服务器端 Java 应用程序。OkHttp 提供了简洁、流畅的 API 用于发送 HTTP 请求和接收响应,支持该协议的所有现代特性:HTTP/2、WebSockets、GZIP 压缩、响应缓存以及故障时的自动连接恢复。
\n\n既然有标准的 java.net.HttpURLConnection,为什么还需要 OkHttp?首先,OkHttp 使用起来要简单得多——无需繁琐的连接配置结构,您只需创建请求并执行即可。其次,该库“开箱即用”地解决了许多问题:自动处理重定向、管理连接池以重复使用、支持透明的 GZIP 压缩,并且能够缓存响应以节省流量。第三,OkHttp 是 Retrofit 和 Picasso 等流行库的基础,这使其成为 Android 开发人员不可或缺的工具。
OkHttp 非常适合任何需要与 REST API 交互、文件上传、WebSockets 或仅执行 HTTP 请求的 Java 项目。由于支持 HTTP/2,该库允许通过单个连接复用请求,这大大加快了与现代服务器的交互速度。4.x 及更高版本已完全用 Kotlin 重写,但保留了与 Java 代码的完全向后兼容性,使其可供所有 Java 开发人员使用。
\n\n2. 安装
\n\nOkHttp 通过 Maven Central 分发。要将该库添加到您的项目中,请在 build.gradle(适用于 Gradle)或 pom.xml(适用于 Maven)文件中添加依赖项。
Gradle(Android / Java 项目)
\ndependencies {\n implementation 'com.squareup.okhttp3:okhttp:4.12.0'\n // 用于请求日志记录(可选)\n implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0'\n}\n\nMaven
\n<dependency>\n <groupId>com.squareup.okhttp3</groupId>\n <artifactId>okhttp</artifactId>\n <version>4.12.0</version>\n</dependency>\n\n对于 Java 模块(无 Gradle/Maven)
\n从 Maven Central 下载 JAR 文件并将其添加到项目的 classpath 中。
\n\n重要提示: OkHttp 4.x 需要 Java 8+ 或 Android API 21+。对于旧版本,请使用 OkHttp 3.x。
\n\n3. 快速入门——最小工作示例
\n\n最简单的示例是执行 GET 请求并将响应体输出到控制台。创建一个 Main.java 类并复制以下代码:
import okhttp3.OkHttpClient;\nimport okhttp3.Request;\nimport okhttp3.Response;\nimport java.io.IOException;\n\npublic class Main {\n public static void main(String[] args) {\n // 1. 创建 HTTP 客户端(通常整个应用共享一个)\n OkHttpClient client = new OkHttpClient();\n\n // 2. 构建请求\n Request request = new Request.Builder()\n .url("https://api.github.com/users/octocat")\n .get()\n .build();\n\n // 3. 同步执行请求(会阻塞线程)\n try (Response response = client.newCall(request).execute()) {\n if (response.isSuccessful()) {\n System.out.println("响应: " + response.body().string());\n } else {\n System.err.println("错误: " + response.code());\n }\n } catch (IOException e) {\n e.printStackTrace();\n }