Android 网络通信(三)OkHttp实现登入
学习笔记
目录
一. 先写XML布局
二、创建 LoginResponse 类 :封装响应数据
目的和作用:
三、创建 MyOkHttp 类 :发送异步请求
代码分析
可能改进的地方
总结
四、LoginActivity 类中实现登录功能
详细分析与注释:
总结:
改进建议:
零、响应数据样例
通过 Post 登入请求
对API不做过多的细节描述。仅供代码理解
{
"code": 200,
"msg": "接口调用成功",
"data": 1
}
一、先写XML布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<EditText
android:id="@+id/ed_username_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入账号"
/>
<EditText
android:id="@+id/ed_password_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入账号"
/>
<Button
android:id="@+id/btn_dengru_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="登入"
/>
</LinearLayout>
二、创建 LoginResponse 类 :封装响应数据
写一个 LoginResponse 类,目的是:用来封装从服务器返回的响应数据,通常用于解析 API 响应的 JSON 数据。它包含两个成员变量 code
和 msg
,分别用于存储响应的状态码和消息。这个类在代码中被用于存储和处理登录请求的返回结果。
public class LoginResponse{
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;
}
}
目的和作用:
-
封装响应数据:
PostDemo
类提供了getCode()
和getMsg()
方法来访问服务器返回的状态码和消息。这些字段通常在 API 响应中用于指示请求的结果(例如,code
可能表示成功或错误状态,msg
可能包含描述或错误信息)。 -
与 JSON 映射:
在登录请求中,使用 Gson 将响应的 JSON 字符串解析为PostDemo
对象。比如,如果服务器返回的数据是{ "code": 200, "msg": "Login success" }
,Gson 会将其映射到PostDemo
类的code
和msg
字段中。 -
简化处理:
通过PostDemo
类,可以方便地在业务逻辑中处理 API 返回的状态信息,进而决定后续的操作,如登录成功或失败。
总结来说,PostDemo
类的目的是为了将服务器响应的 JSON 数据结构映射为 Java 对象,便于后续的处理和使用。
三、创建 MyOkHttp 类 :发送异步请求
再写一个 MyOkHttp 类,目的是:使用了 OkHttp 库来发送异步 HTTP POST 请求,执行一个登录操作。请求发送到指定的 URL,传递用户名和密码,返回响应后进行处理。代码主要结构包括请求的构建、发起、回调以及数据的解析等内容。ps.已备注详细注解
public class MyOkHttp {
// 定义登录请求的 URL 地址
private static final String Login_URL = "your_API"; // API地址
// 发送登录请求的公共方法
public static void loginRequest(String username, String password, Context context, NetworkCallback_login c