• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > ADS > ADS使用问答 > 断点续传下载,服务器异常时候,通 过retry增加成功率

断点续传下载,服务器异常时候,通 过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培训课程推荐详情>>

  网站地图