微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 断点续传下载,服务器异常时候,通 过retry增加成功率

断点续传下载,服务器异常时候,通 过retry增加成功率

时间:10-02 整理:3721RD 点击:

[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建立的网络环境下会出现这种问题
,并且服务器发生这样异常时,重发相同请求头能够恢复。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top