OkHttp源码解析(四)——失败重连
来源:互联网 发布:sql2000备份数据库 编辑:程序博客网 时间:2024/04/29 00:47
1.前言
OKHttp内部是做了失败从连的操作的,那么我就来简单看下失败重连的相关逻辑。
2.RealCall#getResponse 说起
因为是失败从连,所以我们要看cacth相关部分的代码,代码如下:
HttpEngine retryEngine = engine.recover(e, false, null); if (retryEngine != null) { releaseConnection = false; engine = retryEngine; continue; }
上面的关键之处在于engine.recover,这个会返回一个HttpEngine对象,并继续执行while循环里的发送请求,读取相应的过程。
3.HttpEngine#recover
在这个方法中,会释放失败的那个HttpEngine所占用的一些资源,并重新new HttpEngine对象。当然,这里的这个对象和我们原来的那个是有区别的,我们看下对比。
原来
new HttpEngine(client, request, false, false, forWebSocket, null, null, null);
重新的
new HttpEngine(client, userRequest, bufferRequestBody, callerWritesRequestBody, forWebSocket, streamAllocation, (RetryableSink) requestBodyOut, priorResponse);
额,很明显的差距就是一些在重新new的时候将我们原先包装的一些对象加入进去,省去了二次包装的过程,
4.总结
失败从连部分的代码逻辑比较简单,各位自己去看吧。
0 1
- OkHttp源码解析(四)——失败重连
- OkHttp源码解析(四)——失败重连
- OkHttp3源码解析04-失败重连
- OKHttp(2)——源码解析
- okhttp源码解析-http协议的实现-重定向
- OkHttp框架的RetryAndFollowUpInterceptor请求重定向源码解析
- 深入理解OkHttp源码(四)——缓存
- OkHttp 3.7源码分析(四)——缓存策略
- OkHttp 3.7源码分析(四)——缓存策略
- Hystrix 源码解析 —— 请求执行(四)之失败回退逻辑
- 熔断器 Hystrix 源码解析 —— 请求执行(四)之失败回退逻辑
- OkHttp源码解析(一)——整体流程(上)
- OkHttp源码解析(二)——整体流程(下)
- OkHttp源码解析(三)——连接池复用
- OkHttp源码解析(五)——cache缓存
- OkHttp源码解析(一)——整体流程(上)
- OkHttp源码解析(二)——整体流程(下)
- OkHttp源码解析(三)——连接池复用
- NYoj-58最少步数
- 从Linux源码安装过程,认识源码安装
- 提高工作效率的三个方法
- 多线程死锁例子
- for语句
- OkHttp源码解析(四)——失败重连
- 关于java线程池和相关
- IDL出现% Program caused arithmetic error: Floating illegal operand 错误!!
- 多线程编程 RW_LOCK 读写锁
- Thinking in Java——第二章-一切都是对象
- 使用 IOS7 原生API进行二维码条形码的扫描
- eclipse最常用快捷键整理
- 双缓冲绘图
- yum源配置EPEL