一个Android和Java上的HTTP和HTTP/2客户端。
简介
HTTP是应用程序访问网络的方式,就是如何交换数据和媒体。高效使用HTTP可以使得事务加载更快并节省带宽。
OkHttp是一个高效HTTP客户端,原因如下:
- HTTP/2支持所有访问相同主机的请求共享一个套接字。
- 连接池减少了请求延迟(如果HTTP/2不可用)。
- 透明GZIP压缩减少了下载大小。
- 响应缓存完全避免了重复请求的网络使用。
OkHttp在网络故障时坚守:它会静默地从普遍连接问题中恢复。如果你的服务有多个IP地址,OkHttp会在第一次连接失败时尝试另外一个地址。对于IPv4+IPv6以及服务放在多个数据中心的情况,这是很重要的。OkHttp会使用先进的TLS特性(SNI,ALPN)来初始化新连接,如果握手失败会回退到TLS 1.0。
使用OkHttp很简单。它的请求/响应API设计为流的构建方式并且不会改变。它支持同步阻塞调用和异步回调调用。
OkHttp支持Android2.3及更高,Java1.7及以上。
示例
使用Get获取内容
下面的代码下载一个URL并使用String打印它的内容。
OkHttpClient client = new OkHttpClient();
String run(String url) throws IOException {
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
使用Post上传数据
下面的代码上传数据到服务器。
public static final MediaType JSON
= MediaType.parse("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();
Response response = client.newCall(request).execute();
return response.body().string();
}
原文链接:
http://square.github.io/okhttp/
OkHttp官方文档系列文章: