Android上传与下载,非常实用简单的实现。
项目地址:https://github.com/pengjianbo/OkHttpFinal
OkHttpFinal简介:
一个对OkHttp封装的简单易用型HTTP请求和文件下载管理框架。更多详情请查看WIKI
简化OkHttp使用
支持GET,POST,PUT,DELETE,HEAD,PATCH谓词
支持Activity和Fragment生命周期结束后终止请求
支持Download Manager功能
支持文件下载多事件回调
支持返回bean对象
支持返回json String数据
支持返回JsonObject对象
支持https请求
支持https证书访问
支持文件上传
支持全局params
支持全局header
支持http cancel
……
#下载OkHttpFinal 下载这个JAR 或者通过Gradle抓取:
compile 'cn.finalteam:okhttpfinal:2.0.7'
如何使用
1、在你App Application中初始化OkHttpFinal(此初始化只是简单赋值不会阻塞线程)
OkHttpFinalConfiguration.Builder builder = new OkHttpFinalConfiguration.Builder();
OkHttpFinal.getInstance().init(builder.build());
2、请求接口
List<File> files = new ArrayList<>();
File file = new File("...");
RequestParams params = new RequestParams(this);//请求参数
params.addFormDataPart("username", mUserName);//表单数据
params.addFormDataPart("password", mPassword);//表单数据
params.addFormDataPart("file", file);//上传单个文件
params.addFormDataPart("files", files);//上传多个文件
params.addHeader("token", token);//添加header信息
HttpRequest.post(Api.LOGIN, params, new BaseHttpRequestCallback<LoginResponse>() {
//请求网络前
@Override
public void onStart() {
buildProgressDialog().show();
}
//这里只是网络请求成功了(也就是服务器返回JSON合法)没有没有分装具体的业务成功与失败,大家可以参考demo去分装自己公司业务请求成功与失败
@Override
protected void onSuccess(LoginResponse loginResponse) {
toast(loginResponse.getMsg());
}
//请求失败(服务返回非法JSON、服务器异常、网络异常)
@Override
public void onFailure(int errorCode, String msg) {
toast("网络异常~,请检查你的网络是否连接后再试");
}
//请求网络结束
@Override
public void onFinish() {
dismissProgressDialog();
}
下载文件
String url = "http://219.128.78.33/apk.r1.market.hiapk.com/data/upload/2015/05_20/14/com.speedsoftware.rootexplorer_140220.apk";
File saveFile = new File("/sdcard/rootexplorer_140220.apk");
HttpRequest.download(url, saveFile, new FileDownloadCallback() {
//开始下载
@Override
public void onStart() {
super.onStart();
}
//下载进度
@Override
public void onProgress(int progress, long networkSpeed) {
super.onProgress(progress, networkSpeed);
mPbDownload.setProgress(progress);
//String speed = FileUtils.generateFileSize(networkSpeed);
}
//下载失败
@Override
public void onFailure() {
super.onFailure();
Toast.makeText(getBaseContext(), "下载失败", Toast.LENGTH_SHORT).show();
}
//下载完成(下载成功)
@Override
public void onDone() {
super.onDone();
Toast.makeText(getBaseContext(), "下载成功", Toast.LENGTH_SHORT).show();
}
});
项目下载地址(包含jar包):点击打开链接