《MainView 》
public interface MainView {
void success(int type,String data);
void fail(int type,String error);
}
《MainModel 》
public interface MainModel {
interface CallBackListener{
void succes(int type,String data);
void fail(int type,String error);
}
void doGetHttp(int type,String url,CallBackListener listener);
void doPostHttp(int type, String url, FormBody.Builder builder, CallBackListener listener);
}
《MainModelIml 》
public class MainModelIml implements MainModel {
@Override
public void doGetHttp(final int type, String url, final CallBackListener listener) {
// doHttp(0,url,listener);
doHttp(type, url, null, listener);
}
@Override
public void doPostHttp(final int type, String url, FormBody.Builder builder, final CallBackListener listener) {
//doHttp(1,url);
doHttp(type, url, builder, listener);
}
private void doHttp(final int type, String url, FormBody.Builder builder, final CallBackListener listener) {
OkHttpUtils okHttpUtils = new OkHttpUtils();
if (builder == null) {
okHttpUtils.get(url);
} else {
okHttpUtils.post(url, builder);
}
okHttpUtils.result(new OkHttpUtils.HttpListener() {
@Override
public void success(String data) {
listener.succes(type, data);
}
@Override
public void fail(String error) {
listener.fail(type, error);
}
});
}
}
《MainPresenter 》
public interface MainPresenter {
void doGetHttp(int type,String url);
void doPostHttp(int type, String url, FormBody.Builder builder);
}
《MainPresenterIml 》
public class MainPresenterIml implements MainPresenter, MainModel.CallBackListener {
private MainModel mainModel;
private MainView mainView;
public MainPresenterIml(MainModel mainModel, MainView mainView) {
this.mainModel = mainModel;
this.mainView = mainView;
}
@Override
public void doGetHttp(int type, String url) {
mainModel.doGetHttp(type, url, this);
}
@Override
public void doPostHttp(int type, String url, FormBody.Builder builder) {
mainModel.doPostHttp(type, url, builder, this);
}
@Override
public void succes(int type, String data) {
mainView.success(type, data);
}
@Override
public void fail(int type, String error) {
mainView.fail(type, error);
}
public void destory() {
if (mainModel != null) {
mainModel = null;
}
if (mainView != null) {
mainView = null;
}
System.gc();
}
}
《OkHttpUtils 》
public class OkHttpUtils {
private int HTTP_SUCCESS = 1000;
private int HTTP_FAIL = 1001;
private HttpListener mHttpListener;
public OkHttpUtils get(String url) {
doHttp(0, url, null);
return this;
}
public OkHttpUtils post(String url, FormBody.Builder bodybuilder) {
doHttp(1, url, bodybuilder);
return this;
}
private void doHttp(int type, String url, FormBody.Builder bodybuilder) {
OkHttpClient client = new OkHttpClient();
Request.Builder builder = new Request.Builder();
builder.url(url);
if (type == 0) {
builder.get();
} else {
builder.post(bodybuilder.build());
}
final Request request = builder.build();
final Message message = Message.obtain();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
message.what=HTTP_FAIL;
handler.sendMessage(message);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
message.obj = request.body().toString();
message.what = HTTP_SUCCESS;
handler.sendMessage(message);
}
});
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == HTTP_SUCCESS){
String data = (String) msg.obj;
Log.i("aaa",data);
mHttpListener.success(data);
}else {
String error = (String) msg.obj;
mHttpListener.fail(error);
}
}
};
//传递接口
public void result(HttpListener mHttpListener) {
this.mHttpListener = mHttpListener;
}
public interface HttpListener {
void success(String data);
void fail(String error);
}
}