安卓02OKGO封装
okgo 是封装好的OkHttp的方法可以直接使用是一个非常方便的第三方控件
GET请求下载
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) {
Toast.makeText(MainActivity.this, "" + response.body(), Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Response<String> response) {
super.onError(response);
Toast.makeText(MainActivity.this, "" + response.body(), Toast.LENGTH_SHORT).show();
}
});
POST请求
HashMap<String, String> map = new HashMap<>();
map.put("itemid", "2");
map.put("act", "ad_app");
// itemid=2&act=ad_app
OkGo.<String>post("http://api.yunzhancn.cn/api/app.interface.php?siteid=78703&").params(map).execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
Toast.makeText(MainActivity.this, "" + response.body(), Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Response<String> response) {
super.onError(response);
Toast.makeText(MainActivity.this, "" + response.body(), Toast.LENGTH_SHORT).show();
}
});
post需要请求体所以需要放入参数
下载文件
OkGo.<File>get("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1").execute(new FileCallback("/sdcard/", "abc") {
@Override
public void onSuccess(Response<File> response) {
Toast.makeText(MainActivity.this, "下载成功", Toast.LENGTH_SHORT).show();
}
@Override
public void downloadProgress(Progress progress) {
super.downloadProgress(progress);
float fraction = progress.fraction;
main_drowpro.setProgress((int) (fraction * 100));
}
});
需要放入文件的位置与文件名称
下载展示图片
OkGo.<Bitmap>get("https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1567492540&di=cc660513a2d0268a4f67ba20b76b234c&src=http://d-pic-image.yesky.com/1080x-/uploadImages/2019/044/59/1113V6L3Q6TY.jpg")
.execute(new BitmapCallback() {
@Override
public void onSuccess(Response<Bitmap> response) {
Toast.makeText(MainActivity.this, "下载成功", Toast.LENGTH_SHORT).show();
Bitmap body = response.body();
main_image.setImageBitmap(body);
}
@Override
public void downloadProgress(Progress progress) {
super.downloadProgress(progress);
float fraction = progress.fraction;
main_duandianpro.setProgress((int) (fraction*100));
}
});
类型为Bitmap所以返回值为Bitmap(OKgo是可以控制UI)所以可以直接放入ImageView直接展示图片
自定义CallBack可以自定义一些数据返回直接继承
创建自定义的CallBack
package com.example.myday004;
import com.alibaba.fastjson.JSON;
import com.lzy.okgo.callback.AbsCallback;
import okhttp3.Response;
public abstract class JSONCallBack<T> extends AbsCallback<T> {
private Class<T> tClass;
public JSONCallBack(Class<T> tClass) {
this.tClass = tClass;
}
@Override
public T convertResponse(Response response) throws Throwable {
String string = response.body().string();
if (string==null){
return null;
}
T json=null;
json= (T) JSON.parseObject(string, tClass);
if (json==null){
return null;
}
return json;
}
}
```
### 如何使用自定义的CallBack
```java
OkGo.<JSONBean>get("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1").execute(new JSONCallBack<JSONBean>(JSONBean.class) {
@Override
public void onSuccess(Response<JSONBean> response) {
JSONBean body = response.body();
Log.i("---", "onSuccess: "+body);
}
@Override
public void onError(Response<JSONBean> response) {
super.onError(response);
Log.i("----", "onError: "+response.body());
}
});
```
# (要加运行时权限)