OkHttp 学习第一波

最近经常用到 OkHttpClient,这里就记录下学习笔记吧!

以下内容来自:OkHttp 官方主页

概览

HTTP 是现代网络应用最常用的一种通信协议。该协议定义了客户端与服务器端交换数据以及媒介的方式。使用 HTTP 协议可以让你快速加载大量内容并且节省你的带宽。
OkHttp 是一个 HTTP 客户端,默认支持以下特性:

  • 对 HTTP/2 的支持使对同一个主机请求多个资源时可以共享同一个 socket 连接。
  • 连接池可以降低请求延迟(未启用 HTTP/2 的情况下,客户端每请求一个资源都需要跟服务器端建立一条 socket 连接。创建 socket 连接的耗时在请求耗时中占据一定的百分比)
  • 透明的 GZIP 压缩可以大大降低资源的大小。
  • 对于重复的请求可以使用缓存在本地的响应。

对于复杂的网络连接问题,OkHttp 有自己的一套处理方式:首先,它可以自动从常见的连接问题中恢复。其次,当你的服务有多个 IP 地址时,如果第一次连接失败,OkHttp 会请求其他可选的地址。这对于同时启用了 IPv4 和 IPv6 以及服务主机位于多个冗余数据中心的情况是非常有必要的。最后,OkHttp 初始化一个连接时会使用最新的 TLS 特性(SNI,ALPN),并且如果握手失败的话会自动切换到 TLS 1.0。

不得不说,使用 OkHttp 是非常容易的。它的请求/响应 API 被设计成构建者形式,并且不会经常变化。而且,OkHttp 即支持同步阻塞调用也支持异步回调的形式。
OkHttp 支持 Android 2.3 及以上版本。对于 Java 而言,最低支持版本是 1.7。