OKHTTP(一)Overview

OkHttp

HTTP是现代应用网络的方式。这就是我们交换数据和媒体的方式。有效地执行HTTP可以加快您的负载并节省带宽。
OkHttp是一个默认有效的HTTP客户端:

  • HTTP / 2支持允许对同一主机的所有请求共享套接字。
  • 连接池减少了请求延迟(如果HTTP / 2不可用)。
  • 透明GZIP缩小了下载大小。
  • 响应缓存可以完全避免网络重复请求。

当网络很麻烦时,OkHttp坚持不懈:它将从常见的连接问题中无声地恢复。
如果您的服务有多个IP地址,如果第一次连接失败,OkHttp将尝试备用地址。
这对于IPv4 + IPv6和冗余数据中心中托管的服务是必需的。
OkHttp支持现代TLS功能(TLS 1.3,ALPN,证书固定)。
它可以配置为回退以实现广泛的连接。

使用OkHttp很容易。它的请求/响应API采用流畅的构建器和不变性设计。它支持同步阻塞调用和带回调的异步调用。

Get a URL

1
2
3
4
5
6
7
8
9
10
11
OkHttpClient client = new OkHttpClient();

String run(String url) throws IOException {
Request request = new Request.Builder()
.url(url)
.build();

try (Response response = client.newCall(request).execute()) {
return response.body().string();
}
}

Post to a Server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static final MediaType JSON
= MediaType.get("application/json; charset=utf-8");

OkHttpClient client = new OkHttpClient();

String post(String url, String json) throws IOException {
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
return response.body().string();
}
}

Requirements(要求)

OkHttp适用于Android 5.0+(API级别21+)和Java 8+。
OkHttp对Okio有一个库依赖,这是一个用于高性能I / O的小型库。
我们强烈建议您保持OkHttp最新。
与自动更新Web浏览器一样,与HTTPS客户端保持同步是防止潜在安全问题的重要防御。
我们跟踪动态TLS生态系统并调整OkHttp以改善连接性和安全性。

OkHttp使用您平台的内置TLS实现。
在Java平台上,OkHttp还支持Conscrypt,它将BoringSSL与Java集成在一起。
如果它是第一个安全提供者,OkHttp将使用Conscrypt:

1
Security.insertProviderAt(Conscrypt.newProvider(), 1);