OkHttp是一个处理网络请求的开源项目,是Android端最火热的轻量级框架,由移动支付Square公司贡献用于替代HttpUrlConnection和Apache HttpClient。随着OkHttp的不断成熟,越来越多的Android开发者使用OkHttp作为网络框架。
1、首先推荐看以下几篇文章《OkHttp 3.7源码分析》,了解OKHttp的整体框架以及重要的拦截器模块。
2、分支说明:
remotes/origin/okhttp_3.10.x
remotes/origin/okhttp_3.11.x
remotes/origin/okhttp_3.12.x
remotes/origin/okhttp_3.13.x
remotes/origin/okhttp_3.14.x
remotes/origin/okhttp_3.9.x
remotes/origin/okhttp_4.0.x
remotes/origin/okhttp_4.1.x
从4.X版本开始是使用kotlin语言撰写的,之前是Java写的
3、 3.7版本与3.14版本整体架构是一致的参考以上5篇博客,但在ConnectInterceptor拦截器里网络连接由StreamAllocation换成了Transmitter。
Transmitter是OkHttp应用层和网络层之间的桥梁,依赖Exchange类,它是一个用于发送 HTTP 请求和读取响应的类,发送请求数据响应返回数据,令通过成员变量Http1ExchangeCodec、Http2ExchangeCodec两个类进行IO操作。通过参考文献3博客学习连接机制、路由选择、发送和响应数据等流程。
参考文献:
1、从OKHttpClient使用流程着手一步步剖析源码,https://blog.csdn.net/lx768863620/article/details/87647422
2、基于3.9.X版本源码分析了调度器、拦截器等重要模块流程图比较多,分析透彻,https://blog.csdn.net/json_it/article/details/78404010
3、基于3.14.X源码分析介绍,整体介绍的非常全面,https://blog.csdn.net/qq_21556263/article/details/98847777