想要异步下载文件数据流,比如下apk或者mp4文件等,但文件又不需要全部下载完毕就需要结束时
或者文件太大中间需要暂停时需要用的header range,就是在http请求时设置header中的range参数range:bytes=0-100000(开始点-结束点byte)
1.注意:range是需要你服务器支持的。一般访问某个网页,responseCode 是 http_ok 也就是 200,支持断点续传的话 一般responseCode 是 206,也就是说,首先需要服务器支持,所以有些不支持的服务器需要大家继续研究。(range在android里边或许需要大写:client.addHeader("RANGE", "bytes=1-1000000");)
2.header说明:
Accept-Ranges 可以请求网页实体的一个或者多个子范围字段Accept-Ranges: bytes
Range 只请求实体的一部分,指定范围Range: bytes=1-1024*1024(startpoint- endpoint)
AsyncHttpClient 下载及说明地址:http://loopj.com/android-async-http/client.addHeader("RANGE", "bytes=1-1000000");即:实现setRequestProperty("RANGE", "bytes=1-1000000");代码如下:
AsyncHttpClient client = new AsyncHttpClient();//事先下载jar包到lib目录
String[] allowedContentTypes = new String[] { ".*" };//这里是下载所有文件类型
client.addHeader("RANGE", "bytes=1-1000000");
client.get(url3, new BinaryHttpResponseHandler(allowedContentTypes) {
@Override
public void onSuccess(int statusCode,byte[] imageData) {
// Do something with the file
Log.i(TAG, "start"+statusCode);
try {
readByteData(imageData,1000);
} catch (IOException e) {
// TODO Auto-generated catch block
Log.i(TAG, "err");
e.printStackTrace();
}
Log.i(TAG, "end");
}
public void onFailure(int statusCode, byte[] binaryData) {
// Response failed :(
Log.i(TAG, "err"+statusCode);
}
});
一些说明