Apache 和okhttp重试机制剖析
2016-11-18 14:17:48 0 举报
Apache和OkHttp都提供了重试机制,用于在网络请求失败时自动进行重新尝试。在Apache中,可以使用HttpClient的execute方法来执行请求,并通过设置HttpRequestRetryHandler来实现重试机制。OkHttp则提供了一个更简单的实现方式,通过调用newBuilder()方法并传入一个自定义的Interceptor来实现重试逻辑。无论是使用哪种方式,都需要根据具体的业务场景来选择合适的重试策略,以避免过度重试导致系统资源的浪费。
作者其他创作
大纲/内容
建立socket连接
重机制试:方式为循环Connect当前Route,直到某一个错误出现两次。
loop
Apache重试机制:只针对流程socket连接部分做了Route轮询;其他部分报错,就直接结束
获取Body流
重试机制:循环Connect每一个Route,直到成功建立一条Socket连接或者每一条Route都连接失败为止。
发送请求头
接收请求头及解析
开始
Okhttp重试机制:整个流程(四部分)针对Route轮询,某个环节失败了,会使用下一个Route继续重试;socket连接部分还会做二次连接(即循环连接,直到某一个错误出现两次)
总结:
结束
针对连接做了重试
整套机制,okhttp的优势是:(1)重试机制更完善,因为它的出错重试是针对整个流程的;(2)建立socket连接部分的优化,一定程度上,解决了一些二次连接才会成功的问题;劣势:(1)在异常情况下,请求失败,整个流程的耗时比Apache还要长,因为它得出错重试是:出错重试是针对整个流程的。庆幸的是:okhttp预留了一些参数,可以控制重试流程;一些UI需要及时响应的情况,可以先设置不重试;
0 条评论
下一页