android-async-http实现下载和上传
发布时间:2020-05-24 22:22:58 所属栏目:Java 来源:互联网
导读:android-async-http实现下载和上传
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 一.android-async-http简介RequestParams params = new RequestParams();
params.put("uid","00001");
params.put("password","111111");
二.android-async-http实践
public class HttpClientUtil {
// 实例话对象
private static AsyncHttpClient client = new AsyncHttpClient();
static {
client.setTimeout(11000); // 设置链接超时,如果不设置,默认为10s
}
public static AsyncHttpClient getClient() {
return client;
}
// 用一个完整url获取一个string对象
public static void get(String urlString,AsyncHttpResponseHandler res) {
client.get(urlString,res);
}
// url里面带参数
public static void get(String urlString,RequestParams params,params,res);
}
// 不带参数,获取json对象或者数组
public static void get(String urlString,JsonHttpResponseHandler res) {
client.get(urlString,res);
}
// 带参数,获取json对象或者数组
public static void get(String urlString,res);
}
// 下载数据使用,会返回byte数据
public static void get(String uString,BinaryHttpResponseHandler bHandler) {
client.get(uString,bHandler);
}
//多个url?
public static void get(String urlString,BinaryHttpResponseHandler bHandler) {
client.get(urlString,bHandler);
}
//post
public static void post(String urlString,ResponseHandlerInterface bHandler) {
client.post(urlString,bHandler);
}
2. MyImageDownLoader的实现: public class MyImageDownLoader {
private static final String TAG = "MyImageDownLoader";
Context mContext;
public interface DownLoaderListener {
public void onResult(int res,String s);
}
public MyImageDownLoader() {
}
//download image
public void downloadImage(String uri,String savePath,DownLoaderListener downLoaderListener){
// 指定文件类型
String[] allowedContentTypes = new String[] { "image/png","image/jpeg" };
HttpClientUtil.get(uri,new ImageResponseHandler(allowedContentTypes,savePath,downLoaderListener));
}
public class ImageResponseHandler extends BinaryHttpResponseHandler{
private String[] allowedContentTypes;
private String savePathString;
DownLoaderListener mDownLoaderListener;
public ImageResponseHandler(String[] allowedContentTypes,String path,DownLoaderListener downLoaderListener){
super();
this.allowedContentTypes = allowedContentTypes;
savePathString = path;
mDownLoaderListener = downLoaderListener;
}
@Override
public void onSuccess(int statusCode,Header[] headers,byte[] binaryData) {
Log.i(TAG," statusCode=========" + statusCode);
Log.i(TAG," statusCode=========" + headers);
Log.i(TAG," statusCode====binaryData len=====" + binaryData.length);
if (statusCode == 200 && binaryData!=null && binaryData.length > 0) {
boolean b = saveImage(binaryData,savePathString);
if (b) {
mDownLoaderListener.onResult(0,savePathString);
}
else {
//fail
mDownLoaderListener.onResult(-1,savePathString);
}
}
}
@Override
public void onFailure(int statusCode,byte[] binaryData,Throwable error) {
Log.i(TAG,"download failed");
}
private boolean saveImage(byte[] binaryData,String savePath) {
Bitmap bmp = BitmapFactory.decodeByteArray(binaryData,binaryData.length);
Log.i(TAG,"saveImage==========" + savePath);
File file = new File(savePath);
// 压缩格式
CompressFormat format = Bitmap.CompressFormat.JPEG;
// 压缩比例
int quality = 100;
try {
if (file.createNewFile()){
OutputStream stream = new FileOutputStream(file);
// 压缩输出
bmp.compress(format,quality,stream);
stream.close();
return true;
}
} catch (IOException e) {
Log.i(TAG,"saveImage====003======" + savePath);
e.printStackTrace();
}
Log.i(TAG,"saveImage====004======" + savePath);
return false;
}
}
}
3. HttpAsyncUploader的实现:/**
* 异步上传单个文件
*/
public class HttpAsyncUploader {
private static final String TAG = "HttpAsyncUploader";
Context mContext;
public HttpAsyncUploader() {
}
public void uploadFile(String uri,String path) {
File file = new File(path);
RequestParams params = new RequestParams();
try {
params.put("image",file,"application/octet-stream");
AsyncHttpClient client = new AsyncHttpClient();
HttpClientUtil.post(path,new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode,byte[] responseBody) {
Log.i(TAG," statusCode=========" + statusCode);
Log.i(TAG," statusCode=========" + headers);
Log.i(TAG," statusCode====binaryData len====="+ responseBody.length);
}
@Override
public void onFailure(int statusCode,byte[] responseBody,Throwable error) {
Log.i(TAG," statusCode====binaryData len====="+ responseBody.length);
Log.i(TAG," statusCode====error====="+ error.getLocalizedMessage());
}
});
} catch (FileNotFoundException e) {
}
}
}
4. 调用方法:仅以MyImageDownLoader 来举例说明。private static String URL_PHOTO = "http://img001.us.expono.com/100001/100001-1bc30-2d736f_m.jpg";
private void downloadTest() {
String url =URL_PHOTO;
String fileName = "" + System.currentTimeMillis() + ".jpg";
String savePath = mContext.getCacheDir() + File.separator + fileName;
MyImageDownLoader mMyImageDownLoader = new MyImageDownLoader();
// 开始异步下载
mMyImageDownLoader.downloadImage(
url,new DownLoaderListener() {
@Override
public void onResult(int res,String s) {
Log.i(TAG,"onResult====res===" + res);
Log.i(TAG,"onResult====s===" + s);
if (res == 0) {
// 下载成功
Toast.makeText(mContext,"download success!",Toast.LENGTH_LONG).show();
} else {
// 下载photo失败
Toast.makeText(mContext,"download fail!",Toast.LENGTH_LONG).show();
}
}
});
}
5 项目demo地址:以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
