在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() {
}
});