在android 开发中,我们都会用到Http请求框架有很多,偶尔会更新框架,如从volley替换成okhttp,如果没有做好封装,替换的时候需要修改很多地方。
下面提供一个封装的思路,做一个httpUtil,当需要替换请求框架,我们只需要重写RequestImpl,而不需要修改很多地方。
1.准备一个接口类
public interface IRequest {
<T> void excute(Request request, Class<T> cls,IRequestCallback<T> callback);
void cancelTarget(String cls);
}
2.实现IRequest接口
class RequestImpl : IRequest {
override fun <T> excute(request: Request, cls:Class<T>,callback: IRequestCallback<T>) {
}
override fun cancelTarget(cls:String){
}
}
3.将HttpUtil中所有的实现都委托给RequestImpl对象,这个类本身就不需要去实现IRequest接口中的方法
class HttpUtil private constructor() :IRequest by RequestImpl() {
companion object {
@JvmStatic
val instance:HttpUtil by lazy { HttpUtil() }
}
}
4.使用非常简单
Request mRequest=new Request();
mRequest.setMUrl(SELECT_ADVERT_URL);
mRequest.setMTarget(HttpActivity.class.getName());
mRequest.setMParams(map);
HttpUtil.getInstance().excute(mRequest, String.class,new IRequestCallback<String>() {
@Override
public void onSuccess(String response) {
}
@Override
public void onFailed(String msg) {
}
@Override
public void onNotNetwork() {
}
});