@Override
public void onResponse(File response) {
System.out.println(“onResponse:” + response);
}
});
6.根据tag取消请求
目前对于支持的方法都添加了最后一个参数Object tag,取消则通过OkHttpUtils.cancel(tag)执行。
例如:在Activity中,当Activity销毁取消请求,可以在onDestory里面统一取消。
@Override
protected void onDestroy() {
super.onDestroy();
OkHttpUtils.getInstance().cancelTag(this);
}
7.自定义CallBack
目前内部提供的包含BeanCallBack, StringCallBack, FileCallBack, BitmapCallback,可以根据自己的需求去自定义Callback。
其中BeanCallBack使用比较多,它支持传递一个泛型,将返回的Response对象解析成需要的类型并且返回,目前支持:
-
一般的 JavaBean
-
字符串 String
-
集合泛型 List< Bean >
-
集合泛型 Map< Bean >
以下是实现代码:
public abstract class BeanCallBack extends AbsCallback {
@Override
public T parseNetworkResponse(Response response) throws Exception {
Type type = this.getClass().getGenericSuperclass();
if (type instanceof ParameterizedType) {
//如果用户写了泛型,就会进入这里,否者不会执行
ParameterizedType parameterizedType = (ParameterizedType) type;
Type beanType = parameterizedType.getActualTypeArguments()[0];
if (beanType == String.class) {
//如果是String类型,直接返回字符串
return (T) response.body().string();
} else {
//如果是 Bean List Map ,则解析完后返回
return new Gson().fromJson(response.body().string(), beanType);
}
} else {
//如果没有写泛型,直接返回Response对象
return (T) response;
}
}
}
通过parseNetworkResponse回调的response进行解析,该方法运行在子线程,所以可以进行任何耗时操作。
8.上传下载的进度