源码解析:
Request、Response、OkHttpClient都是builder模式
Response是有ResponseBody和响应头Headers组成的,同理reqeust
RequestBody有两个实现,有FormBody表单、MuyltipartBody上传文件可以使用
Call让HttpEngine真正执行的东西
构建好Request后,由HttpEngine执行。
ConnectionPool是管理Connection的。CallBack需要响应回调的时候实现里面的两个方法。
Dispatcher调度器,核心方法是executed方法,会将RealCall添加到队列中,会通过HttpEngine去请求。
HttpEngine发请求、重发机制、response的构建、
先去缓存里查看,没有的话重新创建
核心方法是sendRequest()
OkHttpClinet将所有的类进行相关联,综合做处理。
okhttp:
okhttp uml
okHttp执行执行流程
静态代码块初始化OkHttpClient 对象
设置支持https ,设置连接超时时间,设置读取超时时间,设置写入超时时间,设置允许重定向,
设置sslSocketFactory
创建主线程的Handler:
new Handler(Looper.getMainLooper());
CommonRequest用来创建各种个样的请求对象
定义请求参数类RequestParams,封装请求参数
DisposeDataHandle代码实现
由于有各种不同的响应形式,所以定义一个DisposeDataHandle类来进行真正的响应
定义响应接口
如何将证书转换成SSLSocketFactory
封装思路讲解
网络模块封装的好处
Callback对象运行在非UI线程,所有类似Handler的方法将结果发送回UI线程中处理
okhttp通过构建FormBody发送Post请求
Dispatcher 负责将每个RealCall添加到请求队列中(同步的、异步的)
ConnectionPool 负责管理所有的Http连接
RealCall负责调用HTTPEngine发起请求
Callback负责回调请求的结果
httpClient负责组织上述类的协同工作
Dns 对象
executed(RealCall call) 将RealCall 对象添加到异步队列中
Dispatcher分发器类,源码带读
又有一个线程池成员变量
recover() 重连方法
sendRequest()发送请求
检查缓存,无缓存才真发请求
核心类HttpEngine浅析
DiscLRU缓存类库
Callback响应回调
ConnectionPool 类浅析
HttpUrl 工具类,包含在okhttp包中
HttpEngine发起请求
Call 是接口,负责执行任务,其实现类是RealCall
Request 类解析
通过内部的静态Builder类构件者模式创建Request请求对象