一、基本介绍
OkHttp是当下Android使用最频繁的网络请求框架,由Square公司开源。Google在Android4.4以后开始将源码中的HttpURLConnection底层实现替换为OKHttp,同时现在流行的Retrofit框架底层同样是使用OKHttp的。
优点:
- 支持HTTP/2并允许对同一主机的所有请求共享一个套接字
- 通过连接池减少请求延迟
- 默认通过GZip压缩数据
- 响应缓存,避免了重复请求的网络
- 请求失败自动重试主机的其他ip,自动重定向
二、基本使用
- 创建okhttp客户端,即OkhttpClient;
- 构建请求对象,即Request;
- 使用okhttp客户端将请求对象放到请求队列中;
String url = "http://wwww.baidu.com";
OkHttpClient okHttpClient = new OkHttpClient();
final Request request = new Request.Builder()
.url(url)
.get()//默认就是GET请求,可以不写
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d(TAG, "onFailure: ");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.d(TAG, "onResponse: " + response.body().string());
}
});
三、工作流程
工作流程如下图所示
- 创建okhttp客户端/OkhttpClient;
- 构建请求/Request;
- 将请求加入队列中并执行;
- 分发器/Dispatcher 进行任务调配和分发;
- 五大拦截器对请求进行一步步处理;
- 返回