- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
断点续传下载,服务器异常时候,通 过retry增加成功率
录入:edatop.com 点击:
[DESCRIPTION]
1,一些资源下载的服务器,在特定的网络环境下,对于客户端的续传下载不能正确响应。
2,对于客户端带Range头的HTTP下载,服务器没有回正确的响应码206,而回的是200。
3,再次发送相同的请求时,服务器又能有正确的响应。
[SOLUTION]
在源码中找到\packages\providers\DownloadProvider\src\com\android\providers\downloADS\DownloadThread.java
这个文件,
修改此文件中的handleExceptionalStatus()函数。
此函数中对于断点续传类型的下载,如果不是206的响应码就直接返回error。如下:
int expectedStatus = state.mContinuingDownload ? 206 : Downloads.Impl.STATUS_SUCCESS;
if (statusCode != expectedStatus) {
handleOtherStatus(state, innerState, statusCode);
}
因此我们需要在上面的代码段之前添加retry处理,如下:
// mtk: add to retry when got 200 code.
if (statusCode == 200 && state.mContinuingDownload && mInfo.mNumFailed < Constants.MAX_RETRIES) {
state.mCountRetry = true;
throw new StopRequestException(Downloads.Impl.STATUS_WAITING_TO_RETRY,
"got 200 status code when resume download, will retry later");
}
注意:这样的修改方法是因为服务器本身异常导致,通常在某些地方cmwap类型APN建立的网络环境下会出现这种问题
,并且服务器发生这样异常时,重发相同请求头能够恢复。
申明:网友回复良莠不齐,仅供参考。如需专业帮助,请学习易迪拓培训专家讲授的ADS视频培训课程。
上一篇:ADS下多个PDK的安装问题,仿真的时候会报错?
下一篇:ADS 1292R 的START引脚悬空,是否会影响使用
ADS培训课程推荐详情>>
国内最全面、最专业的Agilent ADS培训课程,可以帮助您从零开始,全面系统学习ADS设计应用【More..】
- Agilent ADS教学培训课程套装
- 两周学会ADS2011、ADS2013视频教程
- ADS2012、ADS2013射频电路设计详解
- ADS高低阻抗线微带滤波器设计培训教程
- ADS混频器仿真分析实例视频培训课程
- ADS Momentum电磁仿真设计视频课程
- ADS射频电路与通信系统设计高级培训
- ADS Layout和电磁仿真设计培训视频
- ADS Workspace and Simulators Training Course
- ADS Circuit Simulation Training Course
- ADS Layout and EM Simulation Training Course
- Agilent ADS 内部原版培训教材合集