OkHttp3源码学习之OKHttpClient

介绍

OKHttpClient对应于应用层,采用Builder模式,

  • 继承Cloneable 可以Clone

  • 继承Call.Factory 发起HTTP协议请求

  • 继承WebSocket.Factory 发起WebSocket协议请求

HTTP连接与WebSocket连接的区别可以简单的理解:HTTP是非持久的,半全功的,即客户端主动,服务端被动式响应,WebSocket则是持久的,双全功的连接,即客户端与服务端都可主动的连接。

源码解读

OKHttpClient源码大体可以整理成四个部分

OkHttp3源码学习之OKHttpClient_第1张图片
OkHttpClient思维脑图

这一个部分并没有什么可以总结的地方,采用了Builder模式

Builder模式可以简单理解为当一个类的构建逻辑非常复杂,并且可能构建过程中有一定的约束条件时,采用该模式将其构建逻辑转移到了实例化过程。想要了解更多的内容可以查看《Java设计模式》

简单使用

OkHttpClient.Builder builder=new OkHttpClient.Builder();

builder.retryOnConnectionFailure(true).writeTimeout(3,TimeUnit.SECONDS);

OkHttpClient client=builder.build();

扩展

添加Cookie

OkHttp3实现Cookies管理及持久化
使用SharedPreferences做Cookie持久化,二级缓存获取Cookie,

//更新保存Cookie,一般App中我们会在登陆或者注册中更新保存
public void saveFromResponse(HttpUrl url, List) {}       
//定制Cookie的加载策略,比如过滤不传递cookie的url
public List loadForRequest(HttpUrl url) {}

添加授权

builder.authenticator(new Authenticator() {
@Nullable
@Override
public Request authenticate(Route route,okhttp3.Response response) throws IOException {
//建议使用摘要认证
return response.request().newBuilder().header("username","password").build();}
});

添加证书

Android 证书锁

你可能感兴趣的:(OkHttp3源码学习之OKHttpClient)