OKGO&Glide框架
OKGO
OKGO主要功能
基本的get、post、put、delete、head、options、trace、patch八种请求
支持upString,upJson,upBytes,upFile等up类方法上传特定数据
支持一个key上传一个文件,也可以一个key上传多个文件,也可以多文件和多参数一起上传
大文件下载和下载进度回调
大文件上传和上传进度回调
支持cookie的自动管理,并可自定义cookie管理策略
支持缓存模式,不仅支持http缓存协议,也支持自定义缓存策略
支持重定向
支持自定义超时自动重连次数
支持链式调用
支持https访问,支持双向认证
支持根据tag取消请求,也可全部取消
支持自定义Callback,自动解析网络数据
依赖、注意事项
依赖:
compile 'com.lzy.net:okgo:3.0.4'
注意:
无论做什么请求,第一行的泛型一定要加!!!
GET&POST&UPLOAD&DOWNLOAD&GETIMG
POST请求数据
private void dopost() {
HashMap<String,String> map=new HashMap<>();
map.put("phone","123456");
map.put("passwd","12346");
OkGo.<String>post("https://www.apiopen.top/createUser?key=00d91e8e0cca2b76f515926a36db68f5&")
.params(map)
.execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
Toast.makeText(MainActivity.this, ""+response.body(), Toast.LENGTH_SHORT).show();
}
});
}
POST上传文件
private void upload() {
OkGo.<String>post("http://169.254.113.244/hfs/")
.isMultipart(true)
.params("file",new File("/sdcard/haha.jpg"),"zizi.jpg")
.execute(new StringCallback() {
@Override
public void uploadProgress(Progress progress) {
super.uploadProgress(progress);
progressBar1.setProgress((int) (progress.fraction*100));
}
@Override
public void onSuccess(Response<String> response) {
Toast.makeText(MainActivity.this, ""+response.body(), Toast.LENGTH_SHORT).show();
}
});
}
GET请求JSON
public void getString(){
OkGo.<String>get("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1")
.execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
String body = response.body();
Toast.makeText(MainActivity.this, ""+body, Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Response<String> response) {
super.onError(response);
}
});
}
GET请求图片
private void getBitmap() {
OkGo.<Bitmap>get("https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=486958716,243120904&fm=26&gp=0.jpg")
.execute(new BitmapCallback() {
@Override
public void onSuccess(Response<Bitmap> response) {
Bitmap body = response.body();
imageView.setImageBitmap(body);
Toast.makeText(MainActivity.this, ""+body.getByteCount(), Toast.LENGTH_SHORT).show();
}
});
}
下载文件
private void getFile() {
OkGo.<File>post("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
.execute(new FileCallback() {
@Override
public void onSuccess(Response<File> response) {
File body = response.body();
}
@Override
public void onStart(Request<File, ? extends Request> request) {
super.onStart(request);
}
@Override
public void onError(Response<File> response) {
super.onError(response);
}
@Override
public void onFinish() {
super.onFinish();
}
@Override
public void uploadProgress(Progress progress) {
super.uploadProgress(progress);
}
@Override
public void downloadProgress(Progress progress) {
super.downloadProgress(progress);
progressBar2.setProgress((int) (progress.fraction*100));
}
});
}
Glide框架
三层缓存机制
内存—>SD卡—>网络
加载本地SD卡图片/网络图片/资源图片/视频/GIF动图
//视频只可以加载一帧
Glide .with(this).load(url).into(imageView);
加载圆形头像
Glide.with(this)
.load("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1562587162663&di=58b961a5726901f5d3b97f8924ddc189&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201811%2F10%2F20181110102045_jwqny.jpg")
.apply(RequestOptions.bitmapTransform(new CircleCrop()))
.into(imageView);
加载圆角头像
Glide.with(this)
.load("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1562587162663&di=58b961a5726901f5d3b97f8924ddc189&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201811%2F10%2F20181110102045_jwqny.jpg")
.apply(RequestOptions.bitmapTransform(new RoundedCorners(100)))
.into(imageView);
设置占位符及加载失败图片
Glide.with(this)
.load("http://hbimg.b0.upaiyun.com/9852feef26dcba3d807282aa5dff561b1e223de85b027-Tzv0x0_fw658")
.apply(RequestOptions.bitmapTransform(new RoundedCorners(20))
.error(R.mipmap.error)//加载失败图片
.placeholder(R.drawable.ic_launcher_background))//占位符图片
.into(iv);
代码清除缓存
Glide.get(GlideActivity.this).clearMemory();//清除内存缓存
new Thread(new Runnable() {
@Override
public void run() {
Glide.get(GlideActivity.this).clearDiskCache();//清除SD卡缓存
}
}).start();