2

我对 Android 还是很陌生,所以我对它的库和 API 还不是很熟悉。

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

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

谁能帮帮我吗?

4

2 回答 2

2

该线程应该可以帮助您:链接

这个想法是在请求的标头中使用 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;
}
于 2012-09-09T08:55:10.633 回答
0

您应该研究Accept-Ranges标头以及 Android 中的HttpClient类。

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

于 2012-09-09T08:55:46.253 回答