Bean类
public class User {
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;
}
}
DataCall
public interface DataCall {
void loadSuccess(User data);
}
工具类
public class HttpUtils {
public static String get(String urlString){
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder().url(urlString).get().build();
try {
Response response = okHttpClient.newCall(request).execute();
return response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
}
LoginModel
public class LoginModel {
public static User Login(String model, String pwd){
String data=HttpUtils.get("http://www.zhaoapi.cn/user/login?mobile="+model+"&password="+pwd);
Gson gson=new Gson();
User user = gson.fromJson(data, User.class);
return user;
}
}
LoginPresenter
public class LoginPresenter extends BasePresenter {
public LoginPresenter(DataCall dataCall) {
super(dataCall);
}
@Override
public Object useMOdel(String... srgs) {
return LoginModel.Login(srgs[0],srgs[1]);
}
}
public abstract class BasePresenter {
private DataCall call;
public BasePresenter (DataCall dataCall){
this.call=dataCall;
}
private Handler mHandler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
call.loadSuccess((User) msg.obj);
}
};
public void requst(final String...srgs){
new Thread(new Runnable() {
@Override
public void run() {
User user = (User) useMOdel(srgs);
Message message = mHandler.obtainMessage();
message.obj=user;
mHandler.sendMessage(message);
}
}).start();
}
public abstract Object useMOdel(String...srgs);
}
MainActivity
public class LoginActivity extends AppCompatActivity implements View.OnClickListener,DataCall {
Button btnLogin;
private LoginPresenter loginPresenter;
private EditText ed_model,ed_pwd;
private Button btn_login;
LoginPresenter loginPesenter = new LoginPresenter(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
ed_model = findViewById(R.id.ed_model);
ed_pwd = findViewById(R.id.ed_pwd);
btn_login = findViewById(R.id.btn_login);
btn_login.setOnClickListener(this);
}
@Override
public void onClick(View view) {
String mobile = ed_model.getText().toString();
String password = ed_pwd.getText().toString();
loginPesenter.requst(mobile,password);
}
@Override
public void loadSuccess(User data) {
Integer code = Integer.valueOf(data.getCode());
Toast.makeText(this, data.getCode()+""+data.getMsg(), Toast.LENGTH_SHORT).show();
if (code==0){
Intent intent = new Intent(LoginActivity.this,MainActivity.class);
startActivity(intent);
}
}
}
布局
LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ed_model"
android:hint="请输入用户名"/>
EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ed_pwd"
android:hint="请输入密码"/>
Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登录"/>
LinearLayout>
依赖
implementation 'com.squareup.okhttp3:okhttp-ws:3.4.2'