登录接口的流程:
代码执行,请求发送到服务端,服务端调用数据库,返回数据,登录成功
一、学习OkHttp网址
https://www.jianshu.com/p/d06382fd048c
二、整体代码包
三、实现步骤:
1.右击,选择Module
2.选择import gradle project,导入封装包。
3.找到对应包的位置
4.完成,显示该包
5.添加依赖implementation project(‘:wldlib’)
6.http在27以下都没办法请求,添加布局文件,使http和手机端兼容
7.在清单文件中添加请求的权限和兼容的权限
8.写出请求的页面布局
9.封装接口提供的数据
(1)封装code值和返回的数据
(2)使用内部类,封装data数据值
10.写出请求的方法,控件的绑定
四、整体代码
1.activity_main.xml布局文件
<?xml version="1.0" encoding="utf-8"?><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"tools:context=".MainActivity"android:orientation="vertical"android:gravity="center"><EditTextandroid:id="@+id/et_account"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入账号"/><EditTextandroid:id="@+id/et_password"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入密码"android:layout_marginTop="20dp"/><Buttonandroid:id="@+id/btn_login"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="登录"android:layout_marginTop="20dp"android:background="#4CAF50"android:textSize="20sp"/></LinearLayout>
2.BaseDataBean文件代码
package com.example.ok.bean;public class BaseDataBean {private int code;private String msg;public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}}
3.UserInfoBean文件代码
package com.example.ok.bean;public class UserInfoBean extends BaseDataBean{private DataBean data;public DataBean getData() {return data;}public void setData(DataBean data) {this.data = data;}public static class DataBean{private UserBean user;private UnitBean unit;public UserBean getUser() {return user;}public void setUser(UserBean user) {this.user = user;}public UnitBean getUnit() {return unit;}public void setUnit(UnitBean unit) {this.unit = unit;}public static class UserBean{private Integer id;private String username;private String password;private String phone;private String position;private Integer unit_id;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getPosition() {return position;}public void setPosition(String position) {this.position = position;}public Integer getUnit_id() {return unit_id;}public void setUnit_id(Integer unit_id) {this.unit_id = unit_id;}}public static class UnitBean{private Integer id;private String unitname;private String declaration;private String logo;private Integer is_stop;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUnitname() {return unitname;}public void setUnitname(String unitname) {this.unitname = unitname;}public String getDeclaration() {return declaration;}public void setDeclaration(String declaration) {this.declaration = declaration;}public String getLogo() {return logo;}public void setLogo(String logo) {this.logo = logo;}public Integer getIs_stop() {return is_stop;}public void setIs_stop(Integer is_stop) {this.is_stop = is_stop;}}}}
4.MainActivity文件代码
package com.example.ok;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;import com.example.ok.bean.UserInfoBean;import com.test.mldlib.okhttp.OKHttpCallBack;import com.test.mldlib.okhttp.OKHttpUtils;import java.io.IOException;import okhttp3.Call;import okhttp3.OkHttpClient;public class MainActivity extends AppCompatActivity {private EditText et_account;private EditText et_password;private TextView tv_date;private TextView tv_data;private Button btn_login;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}public void initView(){et_account=findViewById(R.id.et_account);et_password=findViewById(R.id.et_password);btn_login=findViewById(R.id.btn_login);tv_date=findViewById(R.id.tv_date);tv_data=findViewById(R.id.tv_data);btn_login.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {login(et_account.getText().toString().trim(),et_password.getText().toString().trim());}});}public void login(String account,String password){OKHttpUtils.newBuilder().url("http://zhdj.yiruoche.com/index.php/user/login?").post().addParam("phone",account).addParam("password",password).build().enqueue(new OKHttpCallBack<UserInfoBean>() {@Overridepublic void onSuccess(UserInfoBean userInfoBean) {if (userInfoBean.getCode()==1){Intent intent=new Intent();intent.setClass(MainActivity.this,HomePageActivity.class);startActivity(intent);}String msg = userInfoBean.getMsg();Toast.makeText(MainActivity.this, userInfoBean.getMsg(), Toast.LENGTH_SHORT).show();tv_date.setText(msg);tv_data.setText(userInfoBean.getData().getUser().getUsername());}@Overridepublic void onError(int code) {super.onError(code);Toast.makeText(MainActivity.this, "登录成功0", Toast.LENGTH_SHORT).show();}@Overridepublic void onFailure(Call call, IOException e) {super.onFailure(call, e);Toast.makeText(MainActivity.this, "登录成功1", Toast.LENGTH_SHORT).show();}});}}
5.network_security_config.xml布局文件
<?xml version="1.0" encoding="utf-8"?><network-security-config><base-config cleartextTrafficPermitted="true"/></network-security-config>
6.activity_home_page.xml布局文件
<?xml version="1.0" encoding="utf-8"?><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"tools:context=".HomePageActivity"android:orientation="vertical"android:gravity="center"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="首页"android:textSize="60sp"/></LinearLayout>
7.HomePageActivity文件代码
package com.example.ok;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;public class HomePageActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_home_page);}}
8.结果图:
(1)登录前
(2)登录时的页面跳转
(3)登录后返回的数据
五、不导入包的方式
六、检查错误
1.debug方式<br /><br />2.网页的接口网址,输入用户名和密码<br />
