一,model
//1.写一个登录的方法
public void login(final String phone,String password,final LoginViewCallback loginViewCallback){//3.创建OK
OkHttpClient okHttpClient= new OkHttpClient.Builder().build();
//4.通过表单的形式,构建一个RequestBody,通过key 和value的方式上传参数
RequestBody requestBody=new FormBody.Builder()
.add("source","android")
.add("mobile",phone)
.add("password",password)
.build();
//5.通过我们构造的requeatbody对象,去构造一个request
Request request=new Request.Builder()
.url("https://www.zhaoapi.cn/user/login")
.post(requestBody)
.build();
//6.使用OKHttpclienct 对象执行new Call,传入一个request,去构造一个call 请求
Call call=okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
//请求网络失败
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//请求网络成功
String json=response.body().string();
Gson gson=new Gson();
LoginBean loginBean = gson.fromJson(json, LoginBean.class);
String code = loginBean.getCode();
String msg = loginBean.getMsg();
if("0".equalsIgnoreCase(code)){
//请求成功
if(loginViewCallback!=null){
loginViewCallback.getSuccess(loginBean);
}
}else{
//请求失败
if(loginViewCallback!=null){
loginViewCallback.getError(msg);
}
}
}
});
}
//2.声明一个接口
public interface LoginViewCallback{
void getSuccess(LoginBean loginBean);
void getError(String error);
}
二.Per
LoginView mloginView;
private final LoginModel loginModel;
//1.写一个构造方法
public LoginPresenter(LoginView loginView){
//因为它要拿M层下的请求数据,所以要用到Molde的对象
loginModel=new LoginModel();
this.mloginView=loginView;
}
//2.写一个需要传的方法
public void login(String phone,String password){
if(phone==null){
if(mloginView!=null){
mloginView.getError("手机号不能为空");
}
}
loginModel.login(phone, password, new LoginModel.LoginViewCallback() {
@Override
public void getSuccess(LoginBean loginBean) {
//成功
if(mloginView!=null){
mloginView.getSuccess(loginBean);
}
}
@Override
public void getError(String error) {
//失败
mloginView.getError(error);
}
});
}
三.activity
private EditText edit_name,edit_pwd;
private Button but_login,but_zhuche;
private LoginPresenter loginPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit_name = findViewById(R.id.edit_name);
edit_pwd=findViewById(R.id.edit_password);
but_login = findViewById(R.id.but_login);
but_zhuche=findViewById(R.id.but_zhuche);
but_login.setOnClickListener(this);
but_zhuche.setOnClickListener(this);
loginPresenter = new LoginPresenter((LoginView) this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.but_login:
String name = edit_name.getText().toString();
String pwd = edit_pwd.getText().toString();
loginPresenter.login(name,pwd);
break;
case R.id.but_zhuche:
Intent it=new Intent(MainActivity.this,ZhuChe_activity.class);
startActivity(it);
break;
}
}
@Override
public void getSuccess(LoginBean loginBean) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,"成功",Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void getError(String error) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,"失败",Toast.LENGTH_SHORT).show();
}
});
}