Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从特定字节开始下载_Java_Android_Apache_Httprequest - Fatal编程技术网

Java 从特定字节开始下载

Java 从特定字节开始下载,java,android,apache,httprequest,Java,Android,Apache,Httprequest,我想在android上实现一个分布式下载管理器,以特定的字节长度启动下载。因此,通过这种方式可以下载部分文件,而不仅仅是从http请求的开始到结束 没有什么创新,我只是不知道怎么做。(也不是怨恨) 在java http apache库中,如何从服务器获取文件的长度,然后从文件的中间开始下载到最后?使用HttpClient: if (offset > 0) { String startFrom = "bytes= " + offset + "-"; if (expected

我想在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标头的范围字段:

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

正如凯尔对你的问题的评论,你可以去看看

基本原则是在对文件的(http)请求中添加头

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

或者,您可以省略文件长度到停止(在链接的答案示例中),从该点开始获取文件的其余部分。

这可能是离题的,但您为什么要自己实现下载管理器?各种解决方案已经存在。@jsalonen这是一个新协议的概念证明,如果运气好的话,您会看到这样做有什么警告吗?哪些类型的服务器/协议无法从某些字节启动下载。另外,我如何获得请求的字节长度,因为我需要知道,如果存储部分文件,在我对Instance的偏移量进行假设之前,偏移量将是存储的字节数