我还是Android的新手,所以,我还不熟悉它的库和API。
我的第一个主要项目是下载管理器,它支持分段下载。我已经可以下载文件,但是,我仍然不知道如何或从哪里开始分段下载。
我已经浏览了很多主题,但我真的找不到任何关于Android中分段下载的文章或主题。
任何人都可以帮助我吗?
答案 0 :(得分:2)
此主题应该可以帮助您:link
我们的想法是在您的请求标题中使用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;
}
答案 1 :(得分:0)
您应该研究Accept-Ranges标题以及Android中的HttpClient类。
分段下载仅涉及通过使用HttpClient的请求在Accept-Ranges标头中发送不同的值,接收部分内容,然后将所有接收的内容合并到一个文件中。