仿京东登录代码

OkHttpUtols

public class OkHttpUtils {

    private static OkHttpUtils okHttpUtils;
    private OkHttpClient okHttpClient;

    private OkHttpUtils(){

        okHttpClient= new OkHttpClient.Builder()
                .writeTimeout(2000,TimeUnit.MICROSECONDS)
                .build();

    }

    public static OkHttpUtils getinstance(){

        if(okHttpUtils==null){
           synchronized (OkHttpUtils.class){
               if(okHttpUtils==null){
                   okHttpUtils=new OkHttpUtils();
               }

           }
        }

        return okHttpUtils;
    }


    //get封装
    public void getData(String url,HashMap<String,String>parms,final RequestCallBack requestCallBack ){

        StringBuilder urlsb = new StringBuilder();
        String allUrl = "";

        for (Map.Entry<String,String> stringStringEntry:parms.entrySet() ){

            urlsb.append("?").append(stringStringEntry.getKey()).append("=").append(stringStringEntry.getValue()).append("&");


        }
        allUrl = url+urlsb.toString().substring(0,urlsb.length()-1);
        System.out.println("url:" + allUrl);


        Request request =new Request.Builder()
                .url(allUrl)
                .get()
                .build();

        okHttpClient.newCall(request).enqueue(new Callback() {
            //请求失败
            @Override
            public void onFailure(Call call, IOException e) {
                if(requestCallBack!=null){
                    requestCallBack.failure(call,e);
                }
            }

            //请求成功
            @Override
            public void onResponse(Call call, Response response) throws IOException {

                if(requestCallBack!=null){
                    requestCallBack.onResponse(call,response);
                }
            }
        });


    }


    //post请求方式
    public void postData(String url,HashMap<String,String>parms,final RequestCallBack requestCallBack){

        FormBody.Builder formBodybuilder = new FormBody.Builder();

        if(parms!=null && parms.size()>0){
            for (Map.Entry<String,String> stringStringEntry:parms.entrySet() ){
                formBodybuilder.add(stringStringEntry.getKey(),stringStringEntry.getValue());
            }
        }
        Request request = new Request.Builder()
                .url(url)
                .post(formBodybuilder.build())
                .build();

        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                if (requestCallBack != null) {
                    requestCallBack.failure(call, e);
                }
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (requestCallBack != null) {
                     requestCallBack.onResponse(call,response);
                }
            }
        });



    }





}

 

RequestCallBack

interface RequestCallBack {
    void failure(Call call, IOException e);
    void onResponse(Call call, Response response);

 

 

 

model

private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
        }
    };

    public void login(HashMap<String,String> parms ,final LoginCallback callback){

        OkHttpUtils.getinstance().postData(API.LOGIN_URL, parms, new RequestCallBack() {
            @Override
            public void failure(Call call, IOException e) {

                if(callback!=null){
                    callback.failure("请求失败");
                }

            }

            @Override
            public void onResponse(Call call, Response response) {

               if(response.code()==200){
                String request = null;
                   try {
                       String s = response.body().string();
                        JsonRequest(s,callback);

                   } catch (Exception e) {
                       e.printStackTrace();
                   }
               }
            }
        });

    }

    private void JsonRequest(String s, final LoginCallback callback) {

        final LoginBean bean = new Gson().fromJson(s, LoginBean.class);

        handler.post(new Runnable() {
            @Override
            public void run() {
             if(callback!=null){
                 callback.loginSuccess(bean);
             }
            }
        });

    }


    public interface LoginCallback{
        void failure(String errorMsg);//网络请求失败

        void loginSuccess(LoginBean userBean);
    }
}

View

 interface ILoginView {

    void mobileVerify();//校验手机号合法
    void mobileEmpty();
    void pwdVerify();//校验密码
    void success(LoginBean userBean);//请求成功
    void failure(String msg);//请求失败



Loginbean

LoginBean {
    public String msg;
    public String code;
    public User data;

    public class User{
        public String nickname;
        public String icon;
        public String mobile;

    }

LoginPerstenr

private LoginModel loginModel;
private ILoginView  iLoginView;

public LoginPresenter(ILoginView iLoginView) {
    this.loginModel = new LoginModel();
    this.iLoginView = iLoginView;
}

public void Login(HashMap<String,String>parms) {

    loginModel.login(parms, new LoginModel.LoginCallback() {
        @Override
        public void failure(String errorMsg) {
        iLoginView.failure(errorMsg);
        }

        @Override
        public void loginSuccess(LoginBean userBean) {
            iLoginView.success(userBean);
        }
    });


}

LoginActivity

public void login(View view) {

    HashMap<String,String> parms = new HashMap<>();
    parms.put("mobile",dl_phone.getText().toString());
    parms.put("password",dl_pwd.getText().toString());

    presenter.Login(parms);


}

@Override
public void mobileVerify() {
    Toast.makeText(this,"账号格式不对",Toast.LENGTH_LONG).show();
}

@Override
public void mobileEmpty() {

}

@Override
public void pwdVerify() {

}

@Override
public void success(LoginBean userBean) {
    Intent intent = new Intent(LoginActivity.this,ShowActivity.class);
    startActivity(intent);
}

@Override

猜你喜欢

转载自blog.csdn.net/Mazzze/article/details/81584936