总体设计流程
- 通过构建者模式构建Request,分发到Dispatcher中
- 分发器Dispatcher把Request分发到HttpEngine
- HttpEngine先看该Request有没有缓存(Cache),有则从Cache中取得信息直接给Response;没有则把该Request发至连接池(ConnectionPool),从连接池中获取一个Connection后,通过Connection发送真正的请求
- 请求到后通过路由(Route)和Platform找到合适平台
- 通过Server Socket获取Data
流程图
- 拦截器用于拦截不合法的请求
几种机制
多路复用机制
- HttpEngine类会首先调用
nextConnection()从ConnectionPool中获取一个Connection对象, 若获取不到,才会调用createNextConnection()新建一个Connection。
重连机制
- 在调用
getResponse()后若获取到Response则break,否则在死循环(while(true))中不断重连(retry),重连前会通过recover()重置参数。
-- Dispatcher中有一个线程池ExecutorService,有3种请求队列,2种异步1种同步,ready代表准备就绪,running代表正在执行。
其中
execute()方法会把请求任务RealCall(Call接口的实现类)放至请求队列执行,然后从队列中一一执行所有的RealCall。
使用
发送get请求
发送post请求
参考: okhttp框架解析与应用