android - 改造从 POST 调用中获取空参数
问题描述
我正在使用改造在我的 android 应用程序中进行 API 调用。GET 请求一切正常,但是当我使用 POST 方法调用 API 并使用 @Body 注释将我的自定义对象传递给它时,API 没有收到参数传递。我在 POSTMAN 中用相同的值测试了相同的 API,我得到了响应。我已经使用 Retrofit 有一段时间了,但没有得到在这种情况下到底发生了什么。任何帮助将不胜感激。
接口接口.java
@POST("User/login")
@Headers("x-api-key: 123456")
Call<LoginResponse> login(@Body LoginRequest loginRequest);
登录请求.java
public class LoginRequest {
@SerializedName("email")
@Expose
public String email;
@SerializedName("password")
@Expose
public String password;
@SerializedName("deviceType")
@Expose
public Integer deviceType;
@SerializedName("deviceId")
@Expose
public String deviceId;
@SerializedName("versionName")
@Expose
public String versionName;
public LoginRequest() {
}
public LoginRequest(String email, String password, Integer deviceType, String deviceId, String versionName) {
super();
this.email = email;
this.password = password;
this.deviceType = deviceType;
this.deviceId = deviceId;
this.versionName = versionName;
}
//getters and setters
}
登录响应.java
public class LoginResponse {
@SerializedName("userId")
@Expose
private String userId;
@SerializedName("firstName")
@Expose
private String firstName;
@SerializedName("middleName")
@Expose
private Object middleName;
@SerializedName("lastName")
@Expose
private String lastName;
@SerializedName("email")
@Expose
private String email;
@SerializedName("phone")
@Expose
private String phone;
@SerializedName("userCompany")
@Expose
private String userCompany;
@SerializedName("userName")
@Expose
private String userName;
@SerializedName("userDesignation")
@Expose
private String userDesignation;
@SerializedName("companyName")
@Expose
private String companyName;
@SerializedName("photo")
@Expose
private Object photo;
@SerializedName("userType")
@Expose
private String userType;
@SerializedName("code")
@Expose
private String code;
@SerializedName("countryCode")
@Expose
private String countryCode;
@SerializedName("countryName")
@Expose
private String countryName;
@SerializedName("supervisor")
@Expose
private String supervisor;
@SerializedName("taskStatus")
@Expose
private Integer taskStatus;
@SerializedName("checkInStatus")
@Expose
private Integer checkInStatus;
@SerializedName("time")
@Expose
private String time;
@SerializedName("checkInPlace")
@Expose
private String checkInPlace;
@SerializedName("checkInId")
@Expose
private String checkInId;
@SerializedName("checkinDate")
@Expose
private String checkinDate;
@SerializedName("permission")
@Expose
private List<Permission> permission = null;
public LoginResponse() {
}
public LoginResponse(String userId, String firstName, Object middleName, String lastName, String email, String phone, String userCompany, String userName, String userDesignation, String companyName, Object photo, String userType, String code, String countryCode, String countryName, String supervisor, Integer taskStatus, Integer checkInStatus, String time, String checkInPlace, String checkInId, String checkinDate, List<Permission> permission) {
super();
this.userId = userId;
this.firstName = firstName;
this.middleName = middleName;
this.lastName = lastName;
this.email = email;
this.phone = phone;
this.userCompany = userCompany;
this.userName = userName;
this.userDesignation = userDesignation;
this.companyName = companyName;
this.photo = photo;
this.userType = userType;
this.code = code;
this.countryCode = countryCode;
this.countryName = countryName;
this.supervisor = supervisor;
this.taskStatus = taskStatus;
this.checkInStatus = checkInStatus;
this.time = time;
this.checkInPlace = checkInPlace;
this.checkInId = checkInId;
this.checkinDate = checkinDate;
this.permission = permission;
}
//getters and setters
}
ApiClient.java
public static Retrofit getClient() {
if (retrofit == null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
邮递员截图
解决方案
试试这种方式:
@FormUrlEncoded
@Headers("x-api-key: 123456")
@POST("User/login")
Call<LoginResponse> login(@Field("email") email, @Field("password") password,@Field("deviceType") deviceType,@Field("deviceId") deviceId,@Field("versionName") versionName);
推荐阅读
- c - 游戏人生,稳定配置
- bash - if [ -z "$ENV_VAR" -a -z "$ENV_VAR2"] bash 条件中 -a -z 的含义
- bash - 根据玩家的尝试次数更新分数
- email - 电子邮件模板在移动设备上不是全屏
- python - Pandas to_datetime 将年周转换为 2019 年的日期,第一周是 wk0
- typo3-7.6.x - 如何加载没有相关对象的模型?
- sqlalchemy - SQLAlchemy 没有将会话标记为更改属性的脏会话
- parallel-processing - Ansible 是并行管理所有主机还是仅管理五个主机?(-f 和 :serial)
- powershell - 试图让 Powershell 使用 API
- mysql - 在 nodejs 中运行查询时出现 MYSQL 语法错误。在 mysql 工作台上工作正常