源码解析:
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执行执行流程
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请求对象
MultipartBody 可以封装文件对象
MultipartBody文件上传时使用,FormBody只能上传字符串这样的数据
FormBody类讲解,
没有map,而是有两个List<String>成员变量
khttp核心类RequestBody类:
RequestBody为抽象类,它有两个实现类FormBody 和MultipartBody
khttp核心类ResponseBody类讲解
byte[] bytes() 方法
okhttp核心类Route类讲解
OkHttp重连机制
多路复用机制
okHttp核心类图
okHttp文字流程图
okHttp的总体设计图
重连机制见截图