从某个字节开始下载

时间:2013-07-26 12:27:02

标签: java android apache httprequest

我想在android上实现一个分布式下载管理器,它以某些字节长度启动下载。因此,这样可以下载部分文件,而不是仅从http请求的开头到结尾。

没有任何创新,我只是不知道该怎么做。 (它也不是bitorrent)

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

2 个答案:

答案 0 :(得分:1)

使用HttpClient:

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

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

关于HttpGet标题的Range字段:

Request only part of an entity. Bytes are numbered from 0.

答案 1 :(得分:1)

凯尔对您的问题发表了评论,您可以查看this answer

基本原则是,与文件的(http)请求一起添加标题

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

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