我想在 android 上实现一个分布式下载管理器,以特定字节长度启动下载。因此,这种方式可以下载部分文件,而不仅仅是从 http 请求的开始到结束。
没什么创新的,就是不知道怎么做。(它也不是比特流)
在 java http apache 库中,我如何从服务器获取文件的长度,然后从文件中间开始下载到最后?
我想在 android 上实现一个分布式下载管理器,以特定字节长度启动下载。因此,这种方式可以下载部分文件,而不仅仅是从 http 请求的开始到结束。
没什么创新的,就是不知道怎么做。(它也不是比特流)
在 java http apache 库中,我如何从服务器获取文件的长度,然后从文件中间开始下载到最后?
使用 HttpClient:
if (offset > 0) {
String startFrom = "bytes= " + offset + "-";
if (expected >= 0) {
startFrom += expected;
}
mHttpGet.addHeader("Range", startFrom);
expectedStatusCode = HttpStatus.SC_PARTIAL_CONTENT;
}
其中mHttpGet
是 的实例HttpGet
,offset
是您已经下载的字节数,expected
是文件的大小。
关于 HttpGet 标头的 Range 字段:
Request only part of an entity. Bytes are numbered from 0.
正如凯尔评论你的问题,你可以看看这个答案
基本原则是与您对文件的 (http) 请求一起添加标头
"Range", "bytes="+(file_length_to_start_from) +"-" + (file_length_to_stop)
或者您可以省略 file_length_to_stop (在链接的答案示例中)以从那时起获取文件的其余部分。