okhttpclient登录

来源:互联网 发布:小丽和小云在计算 编辑:程序博客网 时间:2024/06/05 06:31

此次说的是用一个OKhttpclient的框架做一个登录的操作

框架的样子我呢就直接放上来了

利用OKhttpclient返回的数据判断登录账号密码是否存在

有过一些基础的人适合看

package com.example.smallreegister.activity;



import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


import com.example.smallreegister.GSONBean.CodeBean;
import com.example.smallreegister.R;
import com.example.smallreegister.bean.User;
import com.example.smallreegister.net.Api;
import com.example.smallreegister.net.MyOkHttpClient;
import com.example.smallreegister.presenter.UserPresenter;
import com.example.smallreegister.view.IUser;


import java.util.HashMap;


public class Main2Activity extends AppCompatActivity implements IUser, View.OnClickListener {
    private EditText etName;
    private EditText etPwd;
    private Button bt_register;
    private Button bt_show;
    private User user;
    private UserPresenter userPresenter;
    private Handler handker = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case 0:
                    Toast.makeText(Main2Activity.this, "登录成功!", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(Main2Activity.this, InFoActivity.class);
                    startActivity(intent);
                    Main2Activity.this.finish();
                    break;
                case 1:
                    Toast.makeText(Main2Activity.this, "登录失败!", Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    };
    private String namephone;
    private String pwd;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        userPresenter = new UserPresenter(this);
        SharedPreferences name = getSharedPreferences("name", MODE_PRIVATE);
        findid();
    }


    public void findid() {
        etName = (EditText) findViewById(R.id.etName);
        etPwd = (EditText) findViewById(R.id.etPwd);
        bt_register = (Button) findViewById(R.id.bt_register);
        bt_register.setOnClickListener(this);
        bt_show = (Button) findViewById(R.id.bt_show);
        bt_show.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.bt_register:
                //首先获取用户的账号密码
                //userPresenter.show();
                String username = etName.getText().toString().trim();
                String userpwd = etPwd.getText().toString().trim();
                if (TextUtils.isEmpty(username) || TextUtils.isEmpty(userpwd)) {
                    Toast.makeText(this, "账号和密码不能为空!", Toast.LENGTH_SHORT).show();
                } else if (username.length() != 11) {
                    Toast.makeText(this, "手机号长度为11位!", Toast.LENGTH_SHORT).show();
                } else if (userpwd.length() > 16 || username.length() < 6) {
                    Toast.makeText(this, "密码的长度为6-16!", Toast.LENGTH_SHORT).show();
                } else {
                    HashMap<String, String> hashMap = new HashMap<>();
                    hashMap.put("mobile", username);
                    hashMap.put("password", userpwd);
                    MyOkHttpClient.getInstance(this).dopost(Api.REGISTERID, hashMap, CodeBean.class);
                }
                MyOkHttpClient.getInstance(this).setOnClickReturn(new MyOkHttpClient.OnClickReturn() {
                    @Override
                    public void getCode(String code, final String uid) {
                        if (code.equals("0")) {
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    SharedPreferences name = getSharedPreferences("name", MODE_PRIVATE);
                                    SharedPreferences.Editor edit = name.edit();
                                    edit.putString("uid",uid);
                                    edit.commit();
                                }
                            });
                            handker.sendEmptyMessage(0);
                        } else {
                            handker.sendEmptyMessage(1);
                        }
                    }
                });
                break;
            case R.id.bt_show:
                Intent intent = new Intent(this, RegisterActivity.class);
                startActivityForResult(intent, Api.ACTIVITYCODE);
                break;
        }
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        namephone = data.getExtras().getString("username");
        pwd = data.getExtras().getString("userpwd");
        userPresenter.register();


    }




    @Override
    public String getUserName() {
        return namephone;
    }


    @Override
    public String getUserPwd() {
        return pwd;
    }


    @Override
    public void showUser(User user) {
        Toast.makeText(Main2Activity.this, user.getUserName()+"----"+user.getUserPwd(), Toast.LENGTH_SHORT).show();
    }

}

//第二个页面

package com.example.smallreegister.activity;


import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


import com.example.smallreegister.GSONBean.CodeBean;
import com.example.smallreegister.R;
import com.example.smallreegister.net.Api;
import com.example.smallreegister.net.MyOkHttpClient;


import java.util.HashMap;


public class RegisterActivity extends AppCompatActivity implements View.OnClickListener {


    /**
     * 请输入手机号
     */
    private EditText mEtRegisterName;
    /**
     * 请输入密码
     */
    private EditText mEtRegisterPwd;
    /**
     * 注册
     */
    private Button mBtRegisterUp;
    private Handler handker = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case 0:
                    Toast.makeText(RegisterActivity.this, "成功!", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent();
                    intent.putExtra("username", username);
                    intent.putExtra("userpwd", userpwd);
                    setResult(Api.ACTIVITYCODE, intent);
                    RegisterActivity.this.finish();
                    break;
                case 1:
                    Toast.makeText(RegisterActivity.this, "失败!", Toast.LENGTH_SHORT).show();
                    break;
            }
        }
    };
    private String username;
    private String userpwd;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        initView();


    }


    private void initView() {
        mEtRegisterName = (EditText) findViewById(R.id.et_register_Name);
        mEtRegisterPwd = (EditText) findViewById(R.id.et_register_Pwd);
        mBtRegisterUp = (Button) findViewById(R.id.bt_register_up);
        mBtRegisterUp.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.bt_register_up:
                username = mEtRegisterName.getText().toString().trim();
                userpwd = mEtRegisterPwd.getText().toString().trim();
                if (TextUtils.isEmpty(username) || TextUtils.isEmpty(userpwd)) {
                    Toast.makeText(this, "账号和密码不能为空!", Toast.LENGTH_SHORT).show();
                } else if (username.length() != 11) {
                    Toast.makeText(this, "手机号长度为11位!", Toast.LENGTH_SHORT).show();
                } else if (userpwd.length() > 16 || username.length() < 6) {
                    Toast.makeText(this, "密码的长度为6-16!", Toast.LENGTH_SHORT).show();
                } else {
                    HashMap<String, String> hashMap = new HashMap<>();
                    hashMap.put("mobile", username);
                    hashMap.put("password", userpwd);
                    MyOkHttpClient.getInstance(this).dopost(Api.ZHUCEID, hashMap, CodeBean.class);
                    MyOkHttpClient.getInstance(this).setOnClickReturn(new MyOkHttpClient.OnClickReturn() {
                        @Override
                        public void getCode(String code, String uid) {
                            if (code.equals("0")) {
                                handker.sendEmptyMessage(0);
                            } else {
                                handker.sendEmptyMessage(1);
                            }
                        }
                    });
                }
                break;
        }
    }


}

//第三个页面

package com.example.smallreegister.activity;


import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


import com.example.smallreegister.R;


public class InFoActivity extends AppCompatActivity implements View.OnClickListener {


    /**
     * username
     */
    private TextView mTvInfoUsername;
    /**
     * 退出登录
     */
    private Button mBtInfoReturn;
    /**
     * 跳转到商品搜索页
     */
    private Button mBtInfoSelect;
    private SharedPreferences name;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_in_fo);
        initView();
        setuid();
    }


    private void setuid() {
        name = getSharedPreferences("name", MODE_PRIVATE);
        String string = name.getString("uid", "username字段");
        mTvInfoUsername.setText(string);
    }


    private void cleanPreferences() {
        SharedPreferences.Editor edit = name.edit();
        edit.clear();
        edit.commit();
    }


    private void initView() {
        mTvInfoUsername = (TextView) findViewById(R.id.tv_info_username);
        mBtInfoReturn = (Button) findViewById(R.id.bt_info_return);
        mBtInfoReturn.setOnClickListener(this);
        mBtInfoSelect = (Button) findViewById(R.id.bt_info_select);
        mBtInfoSelect.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.bt_info_return:
                cleanPreferences();
                Intent intent = new Intent(InFoActivity.this, Main2Activity.class);
                startActivity(intent);
                InFoActivity.this.finish();
                break;
            case R.id.bt_info_select:
                Intent intent2 = new Intent(InFoActivity.this, ShoppingActivity.class);
                startActivity(intent2);
                InFoActivity.this.finish();
                break;
        }
    }
}

//OKhttpclient

package com.example.smallreegister.net;


import android.content.Context;
import android.util.Log;


import com.example.smallreegister.GSONBean.CodeBean;
import com.example.smallreegister.GSONBean.SelectInfo;
import com.google.gson.Gson;


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


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


/**
 * Created by 郭康杰 on 2017/10/14.
 */


public class MyOkHttpClient {
    private static volatile MyOkHttpClient myOkHttpClient;
    private Context context;
    private final OkHttpClient client;
    private OnClickReturn onClickReturn;


    public MyOkHttpClient(Context context) {
        HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
        logging.setLevel(HttpLoggingInterceptor.Level.BODY);
        client = new OkHttpClient.Builder()
                .addInterceptor(logging)
                .build();
        this.context = context;
    }


    public interface OnClickReturn {
        public void getCode(String code, String uid);
    }


    public void setOnClickReturn(OnClickReturn onClickReturn) {
        this.onClickReturn = onClickReturn;
    }




    public static MyOkHttpClient getInstance(Context context) {
        if (myOkHttpClient == null) {
            synchronized (MyOkHttpClient.class) {
                if (myOkHttpClient == null) {
                    myOkHttpClient = new MyOkHttpClient(context);
                }
            }
        }
        return myOkHttpClient;
    }


    public void dopost(String url, Map<String, String> params, final Class clazz) {
        FormBody.Builder builder = new FormBody.Builder();
        for (Map.Entry<String, String> gmap : params.entrySet()) {
            builder.add(gmap.getKey(), gmap.getValue());
        }
        FormBody formBody = builder.build();


        Request request = new Request.Builder().url(url).post(formBody).build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {


            }


            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                Log.e("REGISTERURL:---", string);
                SelectInfo selectInfo = new Gson().fromJson(string.toString(), SelectInfo.class);
                String msg = selectInfo.getMsg();
                if (msg.equals("查询成功")) {
                    Log.e("REGISTERURL:---", "查询成功!!!!!!!!!!!!!!!!");
                } else {
                    CodeBean codeBean = (CodeBean) new Gson().fromJson(string.toString(), clazz);
                    String code = codeBean.getCode();
                    int uid = 123;
                    if (code.equals("0")) {
                        uid = codeBean.getData().getUid();
                    }
                    Log.e("REGISTERURL:---", code + "");
                    onClickReturn.getCode(code, uid + "");
                }
            }
        });
    }


}







原创粉丝点击