| 失效链接处理 |
|
为什么越来越多人使用 OkHttp 5.5 ?
相关截图:
![]() 主要内容:
先认识一下 OkHttp
OkHttp 是 Square 出品的 HTTP 客户端,Android 和 JVM 上的 Java、Kotlin 都能用。你可以把它理解成应用和网站之间的交通调度:你交出一个请求,它负责找地址、建连接、做 TLS、收回响应。用完的连接不会立刻扔掉,下一次还能接着用。
在 Java 里,调用方式和 4.x 几乎一样,还是 OkHttpClient.Builder 和 Request.Builder。库本身用 Kotlin 写,会带上 kotlin-stdlib,业务代码不用改成 Kotlin。
很多人并不是亲手 new 一个客户端,而是通过 Retrofit 间接用上它。版本一升,超时、证书、拦截器这些行为都会跟着变。5.5 的讨论度不低,也是因为这条依赖已经躺在很多 Java 服务的调用链上,不只是手机 App。
Java 项目里也在换它
Java 11 以后,JDK 自带了 java.net.http.HttpClient,简单请求够用。等接口一多,大家还是会去找现成的连接池、HTTP/2、拦截器和失败重试。OkHttp 这些都开箱就有,同步的 execute() 和异步的 enqueue() 也能并存。所以这几年,纯 Java 的后端、批处理和中间件里,它出现的次数明显多了。
5.0 起,OkHttp 把 JVM 和 Android 拆成了两套产物。Gradle 认模块元数据,写 com.squareup.okhttp3:okhttp 就会自动选到 JVM 包。Maven 认的是普通 POM,空的 okhttp 构件拉下来没有 class,Java 项目要显式依赖 okhttp-jvm。这是 5.x 里 Java 用户最容易踩的一个坑,也说明官方在认真照顾 JVM 这条线,而不是只给 Android 发包。
同一时期还补上了 GraalVM 原生镜像、JPMS 的 module-info,以及 IPv6 / IPv4 一起试的 Happy Eyeballs。服务要打成原生二进制,或者模块化工程要过编译期检查,这些都比「再包一层 Apache HttpClient」省事。
|


苏公网安备 32061202001004号
