bean 类
package bawei.com.myjddemo20180418.show.mine.login.bean;
/**
* Created by zhangjunyou on 2018/4/24.
*/
- public class LoginBean {
- /**
- * msg : 登录成功
- * code : 0
- * data : {"age":null,"appkey":"3810e90242942ccc","appsecret":"CCC86F14A03DE8B7507F03584796B7D1","createtime":"2018-04-24T16:24:03","email":null,"fans":null,"follow":null,"gender":null,"icon":"https://www.zhaoapi.cn/images/1522494152236aa.jpg","latitude":null,"longitude":null,"mobile":"13813575369","money":null,"nickname":null,"password":"8F669074CAF5513351A2DE5CC22AC04C","praiseNum":null,"token":"F07AD4CFD507904EB3E05A3EEF5D9044","uid":4905,"userId":null,"username":"13813575369"}
- */
- private String msg;
- private String code;
- private DataBean data;
- public String getMsg() {
- return msg;
- }
- public void setMsg(String msg) {
- this.msg = msg;
- }
- public String getCode() {
- return code;
- }
- public void setCode(String code) {
- this.code = code;
- }
- public DataBean getData() {
- return data;
- }
- public void setData(DataBean data) {
- this.data = data;
- }
- public static class DataBean {
/**
* age : null
* appkey : 3810e90242942ccc
* appsecret : CCC86F14A03DE8B7507F03584796B7D1
* createtime : 2018-04-24T16:24:03
* email : null
* fans : null
* follow : null
* gender : null
* icon : https://www.zhaoapi.cn/images/1522494152236aa.jpg
* latitude : null
* longitude : null
* mobile : 13813575369
* money : null
* nickname : null
* password : 8F669074CAF5513351A2DE5CC22AC04C
* praiseNum : null
* token : F07AD4CFD507904EB3E05A3EEF5D9044
* uid : 4905
* userId : null
* username : 13813575369
*/
- private Object age;
- private String appkey;
- private String appsecret;
- private String createtime;
- private Object email;
- private Object fans;
- private Object follow;
- private Object gender;
- private String icon;
- private Object latitude;
- private Object longitude;
- private String mobile;
- private Object money;
- private Object nickname;
- private String password;
- private Object praiseNum;
- private String token;
- private int uid;
- private Object userId;
- private String username;
- public Object getAge() {
- return age;
- }
- public void setAge(Object age) {
- this.age = age;
- }
- public String getAppkey() {
- return appkey;
- }
- public void setAppkey(String appkey) {
- this.appkey = appkey;
- }
- public String getAppsecret() {
- return appsecret;
- }
- public void setAppsecret(String appsecret) {
- this.appsecret = appsecret;
- }
- public String getCreatetime() {
- return createtime;
- }
- public void setCreatetime(String createtime) {
- this.createtime = createtime;
- }
- public Object getEmail() {
- return email;
- }
- public void setEmail(Object email) {
- this.email = email;
- }
- public Object getFans() {
- return fans;
- }
- public void setFans(Object fans) {
- this.fans = fans;
- }
- public Object getFollow() {
- return follow;
- }
- public void setFollow(Object follow) {
- this.follow = follow;
- }
- public Object getGender() {
- return gender;
- }
- public void setGender(Object gender) {
- this.gender = gender;
- }
- public String getIcon() {
- return icon;
- }
- public void setIcon(String icon) {
- this.icon = icon;
- }
- public Object getLatitude() {
- return latitude;
- }
- public void setLatitude(Object latitude) {
- this.latitude = latitude;
- }
- public Object getLongitude() {
- return longitude;
- }
- public void setLongitude(Object longitude) {
- this.longitude = longitude;
- }
- public String getMobile() {
- return mobile;
- }
- public void setMobile(String mobile) {
- this.mobile = mobile;
- }
- public Object getMoney() {
- return money;
- }
- public void setMoney(Object money) {
- this.money = money;
- }
- public Object getNickname() {
- return nickname;
- }
- public void setNickname(Object nickname) {
- this.nickname = nickname;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public Object getPraiseNum() {
- return praiseNum;
- }
- public void setPraiseNum(Object praiseNum) {
- this.praiseNum = praiseNum;
- }
- public String getToken() {
- return token;
- }
- public void setToken(String token) {
- this.token = token;
- }
- public int getUid() {
- return uid;
- }
- public void setUid(int uid) {
- this.uid = uid;
- }
- public Object getUserId() {
- return userId;
- }
- public void setUserId(Object userId) {
- this.userId = userId;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- }
- }
model 接口
- public interface ILoginModel {
- void login(String mobile, String password, ILoginPersenter iLoginPersenter);
- }
实体类
- package bawei.com.myjddemo20180418.show.mine.login.model;
- import com.google.gson.Gson;
- import bawei.com.myjddemo20180418.netutils.Api;
- import bawei.com.myjddemo20180418.netutils.OkhttpUtils;
- import bawei.com.myjddemo20180418.netutils.OnNetListener;
- import bawei.com.myjddemo20180418.show.mine.login.bean.LoginBean;
- import bawei.com.myjddemo20180418.show.mine.login.presenter.ILoginPersenter;
- public class LoginModel implements ILoginModel {
- @Override
- public void login(String mobile, String password, final ILoginPersenter iLoginPersenter) {
- String url = Api.LOGIN_URL + "?mobile=" + mobile + "&password=" + password;
- OkhttpUtils.getInstance().doGet(url, new OnNetListener() {
- @Override
- public void onSuccess(String result) {
- LoginBean loginBean = new Gson().fromJson(result, LoginBean.class);
- if ("0".equals(loginBean.getCode())) {
- iLoginPersenter.onSuccess(result);
- }
- }
- @Override
- public void onFailed(Exception e) {
- iLoginPersenter.onFailed(e + "");
- }
- });
- }
- }
presenter 层接口
- public interface ILoginPersenter {
- void login(String mobile, String password);
- void onFailed(String str);
- void onSuccess(Object o);
- void onDestory();
- }
实体类
- package bawei.com.myjddemo20180418.show.mine.login.presenter;
- import com.google.gson.Gson;
- import bawei.com.myjddemo20180418.app.MyApp;
- import bawei.com.myjddemo20180418.netutils.Aerifly;
- import bawei.com.myjddemo20180418.show.mine.login.bean.LoginBean;
- import bawei.com.myjddemo20180418.show.mine.login.model.ILoginModel;
- import bawei.com.myjddemo20180418.show.mine.login.model.LoginModel;
- import bawei.com.myjddemo20180418.show.mine.login.view.ILoginActivity;
- public class LoginPersenter implements ILoginPersenter {
- private ILoginActivity iLoginActivity;
- private ILoginModel loginModel;
- public LoginPersenter(ILoginActivity iLoginActivity) {
- this.iLoginActivity = iLoginActivity;
- loginModel = new LoginModel();
- }
- @Override
- public void login(String mobile, String password) {
- // 判断
- boolean mob = Aerifly.isMobile(MyApp.context, mobile);
- boolean pwd = Aerifly.isPassword(MyApp.context, password);
- if (mob && pwd) {
- loginModel.login(mobile, password, this);
- }
- }
- @Override
- public void onFailed(String str) {
- if (null == iLoginActivity) {
- return;
- }
- iLoginActivity.onFailed(str);
- }
- @Override
- public void onSuccess(Object o) {
- if (null == iLoginActivity) {
- return;
- }
- String result = o.toString();
- Gson g = new Gson();
- LoginBean supperClass = g.fromJson(result, LoginBean.class);
- String code = supperClass.getCode();
- if (code.equals("0")) {
- iLoginActivity.onSuccess(result);
- } else {
- iLoginActivity.onFailed(supperClass.getMsg());
- }
- }
- @Override
- public void onDestory() {
- if (null != iLoginActivity) {
- iLoginActivity = null;
- }
- }
- }
view 层接口
- public interface ILoginActivity {
- void onFailed(String str);
- void onSuccess(Object o);
- }
实体类
- package bawei.com.myjddemo20180418.show.mine.login.view;
- import android.content.Intent;
- import android.os.Bundle;
- import android.support.v7.app.AppCompatActivity;
- import android.util.Log;
- import android.view.KeyEvent;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.ImageView;
- import android.widget.Toast;
- import com.umeng.analytics.MobclickAgent;
- import com.umeng.socialize.ShareAction;
- import com.umeng.socialize.UMAuthListener;
- import com.umeng.socialize.UMShareAPI;
- import com.umeng.socialize.UMShareListener;
- import com.umeng.socialize.bean.SHARE_MEDIA;
- import com.umeng.socialize.media.UMImage;
- import com.umeng.socialize.media.UMWeb;
- import java.util.Map;
- import java.util.Set;
- import bawei.com.myjddemo20180418.R;
- import bawei.com.myjddemo20180418.show.mine.login.presenter.LoginPersenter;
- import bawei.com.myjddemo20180418.show.mine.register.view.RegisterActivity;
- public class LoginActivity extends AppCompatActivity implements View.OnClickListener, ILoginActivity {
- /**
- * 请输入手机号
- */
- private EditText mTel;
- /**
- * 请输入密码
- */
- private EditText mPwd;
- /**
- * 登录
- */
- private Button mLogin;
- /**
- * 注册
- */
- private Button mReg;
- private LoginPersenter loginPersenter;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_login);
- initView();
- }
- private void initView() {
- mTel = (EditText) findViewById(R.id.tel);
- mPwd = (EditText) findViewById(R.id.pwd);
- mLogin = (Button) findViewById(R.id.login);
- mLogin.setOnClickListener(this);
- mReg = (Button) findViewById(R.id.reg);
- mReg.setOnClickListener(this);
- }
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- default:
- break;
- case R.id.login:
- String mobile = mTel.getText().toString();
- String password = mPwd.getText().toString();
- loginPersenter.login(mobile, password);
- break;
- case R.id.reg:
- Intent intent = new Intent(LoginActivity.this, RegisterActivity.class);
- startActivity(intent);
- break;
- }
- }
- @Override
- public void onFailed(String str) {
- Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
- }
- }
注册........................................
bean 类
- package bawei.com.myjddemo20180418.show.mine.register.bean;
- public class RegBean {
- /**
- * msg : 注册成功
- * code : 0
- */
- private String msg;
- private String code;
- public String getMsg() {
- return msg;
- }
- public void setMsg(String msg) {
- this.msg = msg;
- }
- public String getCode() {
- return code;
- }
- public void setCode(String code) {
- this.code = code;
- }
- }
model 层接口
- public interface IRegisterModel {
- void Register(String mobile, String password, IRegisterPersenter iLoginPersenterTwo);
- }
实体类
- package bawei.com.myjddemo20180418.show.mine.register.model;
- import com.google.gson.Gson;
- import bawei.com.myjddemo20180418.netutils.Api;
- import bawei.com.myjddemo20180418.netutils.OkhttpUtils;
- import bawei.com.myjddemo20180418.netutils.OnNetListener;
- import bawei.com.myjddemo20180418.show.mine.login.bean.LoginBean;
- import bawei.com.myjddemo20180418.show.mine.register.presenter.IRegisterPersenter;
- public class RegisterModel implements IRegisterModel {
- @Override
- public void Register(String mobile, String password, final IRegisterPersenter iRegisterPersenter) {
- String url = Api.REGISTER_URL + "?mobile=" + mobile + "&password=" + password;
- OkhttpUtils.getInstance().doGet(url, new OnNetListener() {
- @Override
- public void onSuccess(String result) {
- LoginBean loginBean = new Gson().fromJson(result, LoginBean.class);
- if ("0".equals(loginBean.getCode())) {
- iRegisterPersenter.onSuccess(result);
- }
- }
- @Override
- public void onFailed(Exception e) {
- iRegisterPersenter.onFailed(e + "");
- }
- });
- }
- }
p 层
- public interface IRegisterPersenter {
- void login(String mobile, String password);
- void onFailed(String str);
- void onSuccess(Object o);
- void onDestory();
- }
实体类
- package bawei.com.myjddemo20180418.show.mine.register.presenter;
- import bawei.com.myjddemo20180418.app.MyApp;
- import bawei.com.myjddemo20180418.netutils.Aerifly;
- import bawei.com.myjddemo20180418.show.mine.register.model.IRegisterModel;
- import bawei.com.myjddemo20180418.show.mine.register.model.RegisterModel;
- import bawei.com.myjddemo20180418.show.mine.register.view.IRegister;
- public class RegisterPersenter implements IRegisterPersenter {
- IRegister iRegister;
- IRegisterModel iRegisterModel;
- public RegisterPersenter(IRegister iRegister) {
- this.iRegister = iRegister;
- iRegisterModel = new RegisterModel();
- }
- @Override
- public void login(String mobile, String password) {
- // 判断
- boolean mob = Aerifly.isMobile(MyApp.context, mobile);
- boolean pwd = Aerifly.isPassword(MyApp.context, password);
- if (mob && pwd) {
- iRegisterModel.Register(mobile, password, this);
- }
- }
- @Override
- public void onFailed(String str) {
- if (iRegister == null) {
- return;
- }
- iRegister.onFailed(str);
- }
- @Override
- public void onSuccess(Object o) {
- if (null == iRegister) {
- return;
- }
- iRegister.onSuccess(o.toString());
- }
- @Override
- public void onDestory() {
- if (null != iRegister) {
- iRegister = null;
- }
- }
- }
view 层接口
- public interface IRegister {
- void onFailed(String s);
- void onSuccess(Object o);
- }
实体类
- package bawei.com.myjddemo20180418.show.mine.register.view;
- import android.content.Intent;
- import android.os.Bundle;
- import android.support.v7.app.AppCompatActivity;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.Toast;
- import com.google.gson.Gson;
- import bawei.com.myjddemo20180418.R;
- import bawei.com.myjddemo20180418.show.mine.login.view.LoginActivity;
- import bawei.com.myjddemo20180418.show.mine.register.bean.RegBean;
- import bawei.com.myjddemo20180418.show.mine.register.presenter.RegisterPersenter;
- public class RegisterActivity extends AppCompatActivity implements View.OnClickListener,IRegister {
- /**
- * 请输入电话号
- */
- private EditText mEtMobile;
- /**
- * 请输入密码
- */
- private EditText mEtPass;
- /**
- * 立即注册
- */
- private Button mBtnRegisterNow;
- private RegisterPersenter registerPersenter;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_register);
- initView();
- }
- private void initView() {
- mEtMobile = (EditText) findViewById(R.id.et_mobile);
- mEtPass = (EditText) findViewById(R.id.et_pass);
- mBtnRegisterNow = (Button) findViewById(R.id.btn_registerNow);
- mBtnRegisterNow.setOnClickListener(this);
- registerPersenter = new RegisterPersenter(this);
- }
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- default:
- break;
- case R.id.btn_registerNow:
- String mobile = mEtMobile.getText().toString();
- String pass = mEtPass.getText().toString();
- registerPersenter.login(mobile,pass);
- break;
- }
- }
- @Override
- public void onFailed(String s) {
- }
- @Override
- public void onSuccess(Object o) {
- String result = o.toString();
- Gson g = new Gson();
- RegBean supperClassTwo = g.fromJson(result, RegBean.class);
- String code = supperClassTwo.getCode();
- if (code.equals("0")) {
- Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
- startActivity(intent);
- Toast.makeText(this, supperClassTwo.getMsg(), Toast.LENGTH_SHORT).show();
- finish();
- } else {
- Toast.makeText(this, supperClassTwo.getMsg(), Toast.LENGTH_SHORT).show();
- }
- }
- }
验证
- package bawei.com.myjddemo20180418.netutils;
- import android.content.Context;
- import android.widget.Toast;
/**
* Created by zhangjunyou on 2018/4/13.
*/
- public class Aerifly {
- // 手机号验证
- public static boolean isMobile(Context content, String tel) {
- if (tel.matches(Api.REGEX_TEL)) {
- } else {
- Toast.makeText(content, "手机号码格式不正确", Toast.LENGTH_SHORT).show();
- return false;
- }
- return true;
- }
- // 密码验证
- public static boolean isPassword(Context content, String pwd) {
- if (pwd.matches(Api.REGEX_PASSWORD)) {
- }else {
- Toast.makeText(content, "密码长度为 6-20 位不能包含特殊字符", Toast.LENGTH_SHORT).show();
- return false;
- }
- return true;
- }
- }
OK 工具类
- public interface OnNetListener {
- void onSuccess(String result);
- void onFailed(Exception e);
- }
- package bawei.com.myjddemo20180418.netutils;
- import android.os.Handler;
- import android.os.Looper;
- import android.util.Log;
- 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 OkhttpUtils {
- //private static OkhttpUtils okhttpUtils = new OkhttpUtils();// 饿汉式
- private static OkhttpUtils instance;
- private final OkHttpClient okHttpClient;
- private final Handler handler;
- // 构造方法要私有化
- private OkhttpUtils() {
- // 创建 OkhttpClient 对象
- okHttpClient = new OkHttpClient.Builder()
- .connectTimeout(15, TimeUnit.SECONDS)// 连接超时
- .writeTimeout(20, TimeUnit.SECONDS)// 写入超时
- .readTimeout(20, TimeUnit.SECONDS)// 读取超时
- .build();
- handler = new Handler(Looper.getMainLooper());
- }
- // 单例模式
- // 懒汉式
- public static OkhttpUtils getInstance() {
- if (instance == null) {
- instance = new OkhttpUtils();
- }
- return instance;
- }
- /* 饿汉式
- public static OkhttpUtils getInstance(){
- return okhttpUtils;
- }*/
- /**
- * GET 请求
- *
- * @param url
- */
- public void doGet(String url, final OnNetListener onNetListener) {
- // 创建 Request
- final Request request = new Request.Builder()
- .url(url)
- .build();
- // 发送请求
- okHttpClient.newCall(request).enqueue(new Callback() {
- @Override
- public void onFailure(Call call, final IOException e) {
- handler.post(new Runnable() {
- @Override
- public void run() {
- onNetListener.onFailed(e);
- }
- });
- }
- @Override
- public void onResponse(Call call, Response response) throws IOException {
- // 拿到服务器返回的数据
- final String string = response.body().string();
- handler.post(new Runnable() {
- @Override
- public void run() {
- onNetListener.onSuccess(string);
- }
- });
- }
- });
- }
- /**
- * doget 请求
- *
- * @param url
- * @param params
- * @param onNetListener
- */
- public void doGet(String url, Map<String, String> params, final OnNetListener onNetListener) {
- // 判断 params 是否为 null
- if (params != null) {
- StringBuilder sb = new StringBuilder();
- sb.append("?");
- // 拼接参数
- for (Map.Entry<String, String> entry : params.entrySet()) {
- sb.append(entry.getKey());
- sb.append("=");
- sb.append(entry.getValue());
- sb.append("&");
- }
- //?mobile=12354678954&password=123456&
- String s = sb.toString();
- String strParam = s.substring(0, s.length() - 1);
- url += strParam;
- Log.e("sdfasdf", "url =" + url);
- }
- // 创建 Request 对象
- Request request = new Request.Builder().url(url).build();
- // 发送请求
- okHttpClient.newCall(request).enqueue(new Callback() {
- @Override
- public void onFailure(Call call, final IOException e) {
- handler.post(new Runnable() {
- @Override
- public void run() {
- onNetListener.onFailed(e);
- }
- });
- }
- @Override
- public void onResponse(Call call, Response response) throws IOException {
- final String string = response.body().string();
- Log.e("MainActivity", "string =" + string);
- handler.post(new Runnable() {
- @Override
- public void run() {
- onNetListener.onSuccess(string);
- }
- });
- }
- });
- }
- /**
- * dopsot 请求
- *
- * @param url
- * @param params
- * @param onNetListener
- */
- public void doPost(String url, Map<String, String> params, final OnNetListener onNetListener) {
- if (params != null) {
- // 创建 FormBody 用于封装参数
- FormBody.Builder fBuilder = new FormBody.Builder();
- for (Map.Entry<String, String> entry : params.entrySet()) {
- fBuilder.add(entry.getKey(), entry.getValue());
- }
- FormBody formBody = fBuilder.build();
- Request.Builder builder = new Request.Builder();
- builder.url(url);
- builder.post(formBody);
- // 创建 Request
- Request request = builder.build();
- okHttpClient.newCall(request).enqueue(new Callback() {
- @Override
- public void onFailure(Call call, final IOException e) {
- handler.post(new Runnable() {
- @Override
- public void run() {
- onNetListener.onFailed(e);
- }
- });
- }
- @Override
- public void onResponse(Call call, Response response) throws IOException {
- final String string = response.body().string();
- Log.e("MainActivity", "string =" + string);
- handler.post(new Runnable() {
- @Override
- public void run() {
- onNetListener.onSuccess(string);
- }
- });
- }
- });
- }
- }
- }
登录注册
来源: http://www.bubuko.com/infodetail-2576684.html