我对 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;
}
您应该研究Accept-Ranges标头以及 Android 中的HttpClient类。
分段下载将只涉及通过使用 HttpClient 的请求在 Accept-Ranges 标头中发送不同的值,接收部分内容,然后将所有接收到的内容合并到一个文件中。