public class BasePresenter<V> {
private V view;
public V getView() {
return view;
}
public void setView(V view) {
this.view = view;
}
public void detachView(){
this.view=null;
}
}
public class HttpUtils<T> {
private final OkHttpClient okHttpClient;
public static HttpUtils getInstance(){
return httpUtilsInstance.httpUtils;
}
private static class httpUtilsInstance{
private static HttpUtils httpUtils=new HttpUtils();
}
private HttpUtils(){
okHttpClient = new OkHttpClient.Builder()
.addNetworkInterceptor(new LogginIntecepter())
.readTimeout(5, TimeUnit.SECONDS)
.writeTimeout(5, TimeUnit.SECONDS)
.build();
}
//拦截器
private class LogginIntecepter implements Interceptor{
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
RequestBody body = request.body();
Log.e("myMessage","");
Headers headers = request.headers();
Response proceed = chain.proceed(request);
Headers headers1 = proceed.headers();
return proceed;
}
}
private CallbackData callbackData;
public interface CallbackData<D>{
void onResponse(D d);
void onFail(String err);
}
public void getData(String url, final Class<T> tClass, CallbackData callbackData){
this.callbackData=callbackData;
final Request request = new Request.Builder()
.url(url)
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Message message = handler.obtainMessage();
message.what=-1;
message.obj=e.getMessage();
handler.sendMessage(message);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String string = response.body().string();
Gson gson=new Gson();
T t = gson.fromJson(string, tClass);
Message message = handler.obtainMessage();
message.obj=t;
message.what=0;
handler.sendMessage(message);
}
});
}
public void postData(String url, final Class<T> tClass, HashMap<String,String> hashMap, CallbackData callbackData){
this.callbackData=callbackData;
FormBody.Builder builder = new FormBody.Builder();
for (Map.Entry<String, String> stringStringEntry : hashMap.entrySet()) {
String key = stringStringEntry.getKey();
String value = stringStringEntry.getValue();
builder.add(key,value);
}
FormBody formBody = builder.build();
Request build = new Request.Builder()
.url(url)
.post(formBody)
.build();
Call call = okHttpClient.newCall(build);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Message message = handler.obtainMessage();
message.what=-1;
message.obj=e.getMessage();
handler.sendMessage(message);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String string = response.body().string();
Gson gson=new Gson();
T t = gson.fromJson(string, tClass);
Message message = handler.obtainMessage();
message.obj=t;
message.what=0;
handler.sendMessage(message);
}
});
}
@SuppressLint("HandlerLeak")
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==0){
T t= (T) msg.obj;
callbackData.onResponse(t);
}else{
String err= (String) msg.obj;
callbackData.onFail(err);
}
}
};
}
public interface IMainView&lt;T&gt; extends IBaseView{ void onSuccgs(T t); void Err(String err);}public class BasePresenter&lt;V&gt; { private V view; public V getView() { ...