优点:支持http2.0,socket自动选择最好路线,并支持自动重连,维护连接池,减少握手次数,拥有Interceptors轻松处理请求与响应(比如透明GZIP压缩,LOGGING),缓存(基于Headers的缓存策略,不仅可以缓存数据,就连响应头都给缓存了)。新版本的OkHttp还有一个新的亮点就是支持WebScoket,这样我们就可以非常方便的建立长连接了。
简单异步流程:
同步流程:
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url("http://www.baidu.com") .build();
try {
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
System.out.println("成功");
}
} catch (IOException e) {
e.printStackTrace();
}
整体请求过程:异步放进线程池中来异步执行,同步放入请求的队列,同步执行。
okttp的一大特色:拦截器(一个拦截链)
作用:通过定义许多拦截器一步一步地对Request进行拦截处理(从头至尾),直到请求返回网络数据,后面又倒过来,一步一步地对Response进行拦截处理,最后拦截的结果就是回调的最终Response。
OkHttpClient 设置nterceptors (),主要以下六大类别:
1.负责失败重试以及重定向的RetryAndFollowUpInterceptor
2.负责把用户构造的请求转换为发送到服务器的请求、把服务器返回的响应转为用户友好的响应的 BridgeInterceptor
3.负责读取缓存直接返回、更新缓存的 CacheInterceptor
4.负责和服务器建立连接的 ConnectInterceptor
4.配置 OkHttpClient 时设置的 networkInterceptors
6.负责向服务器发送请求数据、从服务器读取响应数据的 CallServerInterceptor
简单例子:
简单封装:
未完待续..............