2013-07-26 42 views
2

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

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

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

+0

这可能是脱离主题,但为什么你想要自己实现一个下载管理器?已经有多种解决方案。 – jsalonen

+1

http://stackoverflow.com/questions/14423108/pause-resume-http-connection-download –

+0

@jsalonen其新协议的概念证明,任何运气,你会看到 – CQM

回答

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头的范围字段:

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

有没有这样做的注意事项?哪种服务器/协议不能启动从某些字节下载。另外,如何获取请求的字节长度,因为我需要知道在对偏移量进行假设之前 – CQM

+0

对于instace,如果存储了部分文件,偏移量将为te存储的字节数 – Blackbelt

1

凯尔对你的问题发表了评论,你可以检查出this answer

的基本原理是,随着对你的(HTTP)请求文件添加页眉

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

,或者你可以省略file_length_to_stop(在链接的回答样本)从该点获得文件的剩余部分 上。