Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.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
Android分段下载_Android_Download_Segment - Fatal编程技术网

Android分段下载

Android分段下载,android,download,segment,Android,Download,Segment,我对Android还是新手,所以我对它的库和API还不是很熟悉 我的第一个主要项目是下载管理器,它支持分段下载。我已经可以下载文件了,但是,我仍然不知道如何或者从哪里开始分段下载 我已经浏览了很多帖子,但我真的找不到任何关于Android分段下载的文章或帖子 有人能帮我吗 此线程应该可以帮助您: 我们的想法是在请求头中使用Content Range关键字(您联系的服务器必须能够管理它) 您可以从以下示例代码中获得灵感: public String readFirstChunk(String ur

我对Android还是新手,所以我对它的库和API还不是很熟悉

我的第一个主要项目是下载管理器,它支持分段下载。我已经可以下载文件了,但是,我仍然不知道如何或者从哪里开始分段下载

我已经浏览了很多帖子,但我真的找不到任何关于Android分段下载的文章或帖子


有人能帮我吗

此线程应该可以帮助您:

我们的想法是在请求头中使用Content Range关键字(您联系的服务器必须能够管理它)

您可以从以下示例代码中获得灵感:

public String readFirstChunk(String urlString, int byteCount) {
    String text = null;
    if (urlString != null) {
        org.restlet.Client restletClient = new org.restlet.Client(Protocol.HTTP);
        Request request = new Request(Method.GET, urlString);
        List<Range> ranges = Collections.singletonList(new Range(0, byteCount));
        request.setRanges(ranges);
        Response response = restletClient.handle(request);
        if (Status.SUCCESS_OK.equals(response.getStatus())) {
            text = processSuccessfulChunkRequest(response);
        } else if (Status.SUCCESS_PARTIAL_CONTENT .equals(response.getStatus())) {
            text = processSuccessfulChunkRequest(response);
        } else {
            System.err.println("FAILED "+response.getStatus());
        }
    }
    return text;
}

private String processSuccessfulChunkRequest(Response response) {
    String text = null;
    try {
        text = response.getEntity().getText();
    } catch (IOException e) {
        throw new RuntimeException("Cannot download chunk", e);
    }
    return text;
}
publicstringreadfirstchunk(字符串urlString,int字节计数){
字符串文本=空;
if(urlString!=null){
org.restlet.Client restletClient=新的org.restlet.Client(Protocol.HTTP);
请求=新请求(Method.GET,urlString);
List ranges=Collections.singletonList(新范围(0,字节计数));
请求。设置范围(范围);
Response=restleclient.handle(请求);
if(Status.SUCCESS\u OK.equals(response.getStatus())){
text=processSuccessfulChunkRequest(响应);
}else if(Status.SUCCESS\u PARTIAL\u CONTENT.equals(response.getStatus())){
text=processSuccessfulChunkRequest(响应);
}否则{
System.err.println(“FAILED”+response.getStatus());
}
}
返回文本;
}
私有字符串处理SuccessfulChunkRequest(响应){
字符串文本=空;
试一试{
text=response.getEntity().getText();
}捕获(IOE异常){
抛出新的RuntimeException(“无法下载区块”,e);
}
返回文本;
}
您应该研究Android中的标题和类


分段下载只需要使用HttpClient通过请求发送Accept Ranges头中的不同值,接收部分内容,然后将所有接收到的内容合并到一个文件中

搜索一些开源android torrent客户端。这种分段下载的实现是否使用android的下载管理器类?