Android DownloadManager中止下载请求123:http错误206

时间:2013-10-09 11:56:28

标签: android http-headers android-download-manager

我正在尝试使用DownloadManager下载以下文件:

http://loopstream01.apa.at/?channel=fm4&ua=flash&id=2013-10-05_1902_tl_54_4DDSat1__9778.mp3

代码如下所示:

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(asset.url));
request.setDescription("");
request.setTitle(asset.name);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "test");
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);

下载管理器始终无法下载文件,并显示以下错误消息:

中止下载请求123:http错误206

由于206表示部分内容,因此我总是要求我添加的http请求中的范围

 request.addRequestHeader("Range", "bytes=0-1000");

下载前1000个字节,但错误信息保持不变,没有下载任何内容。 :(

修改当我在Android 4.2设备上运行相同的代码时,我收到以下消息:

  

10-09 21:22:41.461:I / DownloadManager(2379):下载231开始   10-09 21:22:41.692:W / DownloadManager(2379):中止下载请求231:预期OK,但收到部分   10-09 21:22:41.712:I / DownloadManager(2379):下载231完成状态CANNOT_RESUME

1 个答案:

答案 0 :(得分:1)

似乎android下载管理器如果认为它恢复了早期下载,则会处理206恢复响应。否则它将假定响应无效。 通过addRequestHeader插入的显式范围请求将不起作用。

这里是4.3.1的下载线程代码: https://android.googlesource.com/platform/packages/providers/DownloadProvider.git/+/android-4.3.1_r1/src/com/android/providers/downloads/DownloadThread.java