ok+mvp(登录注册)

1.先导包

2.ok的封装类

package com.example.myapplication.model.utid;

import android.os.Handler;
import android.os.Looper;

import java.io.IOException;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class OkhttpUtil {
    private  static  OkhttpUtil mOkhttpUtil;
    private final OkHttpClient mokHttpClient;
    private final Handler mHandler;


    public OkhttpUtil(){
        mHandler = new Handler(Looper.getMainLooper());
        mokHttpClient = new OkHttpClient.Builder()
                .connectTimeout(5000, TimeUnit.MILLISECONDS)
                .readTimeout(5000, TimeUnit.MILLISECONDS)
                .writeTimeout(5000, TimeUnit.MILLISECONDS)
                .build();
    }
    public static  OkhttpUtil getInstance(){
        if(mOkhttpUtil==null){
            synchronized (OkhttpUtil.class){
                if(mOkhttpUtil==null) {
                    return new OkhttpUtil();
                }
            }
        }
        return mOkhttpUtil;
    }
    public void  doget(String url, final OkCallback okCallback) {
        Request request = new Request.Builder()
                .get()
                .url(url)
                .build();
        Call call = mokHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                if(okCallback!=null){
                    mHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            okCallback.onFailure(e);
                        }
                    });
                }
            }
            @Override
            public void onResponse(Call call, final Response response) throws IOException {
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            if(response !=null&&response.isSuccessful()){
                                String  json = response.body().string();
                                if(okCallback !=null){
                                    okCallback.onResponse(json);
                                    return;
                                }
                            }
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        if(okCallback!=null){
                            okCallback.onFailure(new Exception("网络异常"));
                        }
                    }
                });
            }
        });
    }
    public void  dopost(String url, Map<String, String> map, final OkCallback okCallback)throws IOException {
        FormBody.Builder builder = new FormBody.Builder();
        for (String key : map.keySet()) {
            builder.add(key, map.get(key));
        }
        FormBody formBody = builder.build();
        Request request = new Request.Builder()
                .post(formBody)
                .url(url)
                .build();
        Call call = mokHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                if(okCallback!=null){
                    mHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            okCallback.onFailure(e);
                        }
                    });
                }
            }
            @Override
            public void onResponse(Call call, final Response response) throws IOException {
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            if(response !=null&&response.isSuccessful()){
                                String  json = response.body().string();
                                if(okCallback !=null){
                                    okCallback.onResponse(json);
                                    return;
                                }
                            }
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        if(okCallback!=null){
                            okCallback.onFailure(new Exception("网络异常"));
                        }
                    }
                });
            }
        });
    }
    public interface OkCallback {
        void onFailure(Exception e);
        void onResponse(String json);
    }
}
3.m层

//登录的m层

package com.example.myapplication.model;

import android.annotation.SuppressLint;
import android.app.VoiceInteractor;
import android.util.Log;

import com.example.myapplication.model.Bean.LoginBean;
import com.example.myapplication.model.utid.OkhttpUtil;
import com.google.gson.Gson;

import java.io.IOException;

public class Loginmodel {
    private static final String TAG = "Loginmodel================";
   public   void  login(String mobile, String password, final ILoginmodelcallbeck iLoginmodelcallbeck){
       String url ="https://www.zhaoapi.cn/user/login"+"?mobile="+mobile+"&password="+password;
       OkhttpUtil utilInstance = OkhttpUtil.getInstance();

            utilInstance.doget(url, new OkhttpUtil.OkCallback() {
                @Override
                public void onFailure(Exception e) {

                }

                @SuppressLint("LongLogTag")
                @Override
                public void onResponse(String json) {
                    Log.d(TAG, "onResponse: "+json);
                    Gson gson = new Gson();
                    LoginBean loginBean = gson.fromJson(json, LoginBean.class);
            
                    String code = loginBean.getCode();
                    String msg = loginBean.getMsg();
                    if ("0".equalsIgnoreCase(code)) {
                        if (iLoginmodelcallbeck!=null){
                            iLoginmodelcallbeck.onResponse(loginBean);
                        }

                    }else{
                        if (iLoginmodelcallbeck!=null){
                            iLoginmodelcallbeck.onFailure(msg);
                        }

                    }

                }
            });

    }
    public  interface ILoginmodelcallbeck {
        void onFailure(String e);

        void onResponse(LoginBean loginBean);

    }
}
p层的model
package com.example.myapplication.model;


import com.example.myapplication.model.Bean.Regbean;
import com.example.myapplication.model.utid.OkhttpUtil;
import com.google.gson.Gson;

public class Regmodel {
    public void Reg(String mobile, String password, final IRegmodelcallbeck iRegmodelcallbeck){
          String url="https://www.zhaoapi.cn/user/reg"+"?mobile="+mobile+"&password="+password;
        OkhttpUtil instance = OkhttpUtil.getInstance();
        instance.doget(url, new OkhttpUtil.OkCallback() {
            @Override
            public void onFailure(Exception e) {

            }
            @Override
            public void onResponse(String json) {
                Regbean regbean = new Gson().fromJson(json, Regbean.class);
                String code = regbean.getCode();
                String msg = regbean.getMsg();
                if ("0".equalsIgnoreCase(code)){
                    if(iRegmodelcallbeck!=null){
                        iRegmodelcallbeck.onResponseReg(regbean);
                    }
                }else{
                    if(iRegmodelcallbeck!=null){
                        iRegmodelcallbeck.onFailurerReg(msg);
                    }
                }

            }
        });

    }
    public  interface IRegmodelcallbeck {
        void onFailurerReg(String e);

        void onResponseReg(Regbean regbean);

    }
}
p层

package com.example.myapplication.peressen;


import com.example.myapplication.model.Bean.LoginBean;
import com.example.myapplication.model.Bean.Regbean;
import com.example.myapplication.model.Loginmodel;
import com.example.myapplication.model.Regmodel;
import com.example.myapplication.view.ILogiview;

public class Loginper {
    ILogiview mimageView;

    private final Loginmodel iLoginmodeL;
    private final Regmodel regmodel;

    public Loginper(ILogiview iLogiview){
        mimageView=iLogiview;
        iLoginmodeL = new Loginmodel();
        regmodel = new Regmodel();
    }
    public  void  login(String modeil, String password){
       iLoginmodeL.login(modeil, password, new Loginmodel.ILoginmodelcallbeck() {
           @Override
           public void onFailure(String e) {
               if(mimageView!=null){
                  mimageView.onFailure(e);
               }
           }
           @Override
           public void onResponse(LoginBean loginBean) {
               if (mimageView!=null){
                   mimageView.onResponse(loginBean);
               }
           }
       });
    }
    public  void  Reg(String mobile,String password){
         regmodel.Reg(mobile, password, new Regmodel.IRegmodelcallbeck() {
             @Override
             public void onFailurerReg(String e) {
                 if (mimageView!=null){
                     mimageView.onFailurerReg(e);
                 }
             }
             @Override
             public void onResponseReg(Regbean regbean) {
                 if (mimageView!=null){
                     mimageView.onResponseReg(regbean);
                 }
             }
         });
    }
}

v层

package com.example.myapplication;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import com.example.myapplication.model.Bean.LoginBean;
import com.example.myapplication.model.Bean.Regbean;
import com.example.myapplication.peressen.Loginper;
import com.example.myapplication.view.ILogiview;
import com.umeng.commonsdk.UMConfigure;
import com.umeng.socialize.UMAuthListener;
import com.umeng.socialize.UMShareAPI;
import com.umeng.socialize.bean.SHARE_MEDIA;

import java.util.Map;

public class MainActivity extends AppCompatActivity implements ILogiview{

    private Loginper loginper;
    private EditText user_ed;
    private EditText password_ed;
    private UMShareAPI mShareAPI;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        user_ed = findViewById(R.id.user_ed);
        mShareAPI = UMShareAPI.get(this);
        password_ed = findViewById(R.id.password_ed);
        loginper = new Loginper(this);

    }
    public void dl_login(View view) {

        String user = user_ed.getText().toString();
        String password = password_ed.getText().toString();
        loginper.login(user,password);
    }

    public void zc_login(View view) {
        Intent intent = new Intent(MainActivity.this,Main2Activity.class);
        startActivity(intent);
    }
    @Override
    public void onFailure(String e) {
        Toast.makeText(this,e,Toast.LENGTH_LONG).show();
    }

    @Override
    public void onResponse(LoginBean loginBean) {
        Toast.makeText(this,"登录成功",Toast.LENGTH_LONG).show();
    }

v层接口

package com.example.myapplication.view;

import com.example.myapplication.model.Bean.LoginBean;
import com.example.myapplication.model.Bean.Regbean;

public interface ILogiview {
    void onFailure(String e);
    void onResponse(LoginBean loginBean);
    void onFailurerReg(String e);
    void onResponseReg(Regbean regbean);
}

注册的view

package com.example.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import com.example.myapplication.model.Bean.LoginBean;
import com.example.myapplication.model.Bean.Regbean;
import com.example.myapplication.peressen.Loginper;
import com.example.myapplication.view.ILogiview;

public class Main2Activity extends AppCompatActivity implements ILogiview{

    private Loginper loginper;
    private EditText zc_user_ed;
    private EditText zc_password_ed;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        zc_user_ed = findViewById(R.id.zc_user_ed);
        zc_password_ed = findViewById(R.id.zc_password_ed);
        loginper = new Loginper(this);
    }
   //立即注册的点击事件
    public void zc_login(View view) {
        String mobile = zc_user_ed.getText().toString();
        String password = zc_password_ed.getText().toString();
        Log.e("tag","efererere"+password);
        loginper.Reg(mobile,password);
    }

    @Override
    public void onFailure(String e) {

    }

    @Override
    public void onResponse(LoginBean loginBean) {

    }

    @Override
    public void onFailurerReg(String e) {
        Toast.makeText(this,e,Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onResponseReg(Regbean regbean) {
        Toast.makeText(this,"注册成功",Toast.LENGTH_SHORT).show();
    }
}


猜你喜欢

转载自blog.csdn.net/wsj19970717/article/details/80725905