目录
1.OkHttp是什么?
HTTP是现代应用网络的方式请求协议。这是我们交换数据和媒体的方式。高效地执行HTTP可以使您的工作负载更快,并节省带宽。
OkHttp是一个默认高效的HTTP客户端:
1)HTTP/2支持允许对同一主机的所有请求共享一个套接字。
2)连接池减少了请求延迟(如果HTTP/2不可用)。
3)透明的GZIP压缩了下载文件的大小。
4)响应缓存完全避免了网络中的重复请求。
当网络出现问题时,OkHttp会坚持下来:它会从常见的连接问题中悄悄地恢复过来。如果您的服务有多个IP地址,如果第一个连接失败,OkHttp将尝试备用地址。这对于IPv4+IPv6和托管在冗余数据中心中的服务是必要的。OkHttp支持现代TLS特性(TLS 1.3、ALPN、证书固定)。可以将其配置为回退以实现广泛的连接。
使用OkHttp很容易。它的请求/响应API是用链式构建器和不变性设计的。它同时支持同步阻塞调用和带回调的异步调用。
2.Get方式请求URL
这个程序请求一个URL和以字符串的格式打印它的响应内容:
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();
}
}
3.Post方式提交数据到服务器
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();
}
}
4.注意事项
OkHttp适用于Android 5.0+ (API级别21+)和Java 8+。
OkHttp依赖于Okio的高性能I/O和Kotlin标准库。两者都是具有强大向后兼容性的小型库。
我们强烈建议您随时更新OkHttp。与自动更新web浏览器一样,与HTTPS客户机保持同步是防范潜在安全问题的重要手段。我们跟踪动态TLS生态系统,并调整OkHttp以改进连接和安全性。
OkHttp使用您的平台的内置TLS实现。在Java平台上,OkHttp还支持Conscrypt(加密),它将BoringSSL与Java集成在一起。OkHttp将使用,如果它是第一个安全提供商:
Security.insertProviderAt(Conscrypt.newProvider(), 1);
OkHttp 3.12.x branch支持Android 2.3+ (API level 9+)和Java 7+。这些平台缺乏对TLS 1.2的支持,不应该使用。但是由于升级是困难的,我们将备份关键补丁到3.12.x分部到2020年12月31日。
5.引用OkHttp库
implementation("com.squareup.okhttp3:okhttp:4.4.0")
6.MockWebServer
OkHttp包含了一个测试HTTP,HTTPS和HTTP/2客户端;
testImplementation("com.squareup.okhttp3:mockwebserver:4.4.0")