You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中Retrofit Post请求:发送用户信息接收ID与Token的实现方法

Android(Java)中用Retrofit实现Post请求提交用户数据并处理响应

1. 添加依赖

在app/build.gradle(Module级别)中引入Retrofit核心库及Gson转换器依赖:

dependencies {
    // Retrofit核心库
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    // Gson转换器,用于JSON与Java对象的序列化/反序列化
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
}

2. 创建数据模型类

定义与后端接口字段匹配的请求体、响应体POJO类:

请求体类(UserRequest)

public class UserRequest {
    private String firstName; // 名字
    private String lastName;  // 姓氏
    private int age;          // 年龄
    private String phone;     // 手机号
    private String password;  // 密码

    // 构造方法,用于快速初始化请求数据
    public UserRequest(String firstName, String lastName, int age, String phone, String password) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
        this.phone = phone;
        this.password = password;
    }

    // 按需添加Getter/Setter方法,Gson可直接访问private字段,若需外部调用则添加
    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    // 其余字段的Getter/Setter省略,按需补充
}

响应体类(UserResponse)

public class UserResponse {
    private String userId; // 后端返回的用户ID
    private String token;  // 后端返回的Token

    // Getter方法,用于获取响应数据
    public String getUserId() {
        return userId;
    }

    public String getToken() {
        return token;
    }
}

3. 定义Retrofit接口

创建接口声明Post请求的配置:

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;

public interface UserApiService {
    // 替换为你的后端具体接口路径,例如"/api/user/register"
    @POST("your-api-endpoint")
    Call<UserResponse> submitUserData(@Body UserRequest userRequest);
}

4. 初始化Retrofit实例

封装Retrofit初始化逻辑,避免重复创建实例:

import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class RetrofitClient {
    private static Retrofit retrofit;
    // 替换为你的后端Base URL,例如"https://your-server-domain.com/"
    private static final String BASE_URL = "your-base-url";

    public static Retrofit getRetrofitInstance() {
        if (retrofit == null) {
            retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        return retrofit;
    }
}

5. 发起Post请求并处理响应

在Activity/Fragment或业务逻辑类中执行请求:

// 构造请求体数据
UserRequest userRequest = new UserRequest("张三", "王", 28, "13900139000", "abc123");

// 获取ApiService实例
UserApiService apiService = RetrofitClient.getRetrofitInstance().create(UserApiService.class);

// 发起异步请求
Call<UserResponse> call = apiService.submitUserData(userRequest);
call.enqueue(new retrofit2.Callback<UserResponse>() {
    @Override
    public void onResponse(Call<UserResponse> call, retrofit2.Response<UserResponse> response) {
        if (response.isSuccessful() && response.body() != null) {
            // 请求成功,获取返回数据
            String userId = response.body().getUserId();
            String token = response.body().getToken();
            // 后续处理:保存Token、跳转页面等
        } else {
            // 请求成功但响应异常,处理错误信息
            String errorMsg = response.message();
            // 例如Toast提示用户注册失败
        }
    }

    @Override
    public void onFailure(Call<UserResponse> call, Throwable t) {
        // 请求失败,处理网络异常或其他错误
        String errorMsg = t.getMessage();
        // 例如Toast提示网络连接失败
    }
});

额外注意事项

  • 必须在AndroidManifest.xml中添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
  • 若后端要求表单提交(而非JSON格式),可改用@FormUrlEncoded+@Field注解替换@Body。
  • 建议遵循MVVM架构,将网络请求放在ViewModel或Repository中,避免直接在UI层处理业务逻辑。

内容的提问来源于stack exchange,提问作者Вячеслав Предеин

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 22:05:18