MVP与OkHttpUtils

《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);
}

}

猜你喜欢

转载自blog.csdn.net/weixin_44666694/article/details/88934019
MVP