2

我想在 android 上实现一个分布式下载管理器,以特定字节长度启动下载。因此,这种方式可以下载部分文件,而不仅仅是从 http 请求的开始到结束。

没什么创新的,就是不知道怎么做。(它也不是比特流)

在 java http apache 库中,我如何从服务器获取文件的长度,然后从文件中间开始下载到最后?

4

2 回答 2

1

使用 HttpClient:

if (offset > 0) {
    String startFrom = "bytes= " + offset + "-";
    if (expected >= 0) {
        startFrom += expected;
    }
    mHttpGet.addHeader("Range", startFrom);
    expectedStatusCode = HttpStatus.SC_PARTIAL_CONTENT;
}

其中mHttpGet是 的实例HttpGetoffset是您已经下载的字节数,expected 是文件的大小。

关于 HttpGet 标头的 Range 字段:

Request only part of an entity. Bytes are numbered from 0.
于 2013-07-26T12:39:02.667 回答
1

正如凯尔评论你的问题,你可以看看这个答案

基本原则是与您对文件的 (http) 请求一起添加标头

 "Range", "bytes="+(file_length_to_start_from) +"-" + (file_length_to_stop)

或者您可以省略 file_length_to_stop (在链接的答案示例中)以从那时起获取文件的其余部分。

于 2013-07-26T12:39:16.100 回答