因此,我在Postman中尝试了该请求,并且工作正常。但是,当我在Android中执行该操作时,response.body()为空。该请求将发送电子邮件和密码以进行登录,并应返回User对象以及其他详细信息。
loginUser.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
if (response.isSuccessful()) {
loginView.onLoginResult(response.body());
} else {
loginView.showLoginErrorResult();
}
}
这是我的改造界面:
public interface NetworkAPI {
@POST("/login")
Call<User> login(@Body UserLogin userLogin);
}
RetrofitClient:
public class RetrofitClient {
private static Retrofit retrofit = null;
public static Retrofit getAPI(String BASE_URL) {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(logging).build();
if (retrofit == null) {
retrofit = new Retrofit
.Builder()
.baseUrl(BASE_URL)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
我的用户类别:
public class User {
@SerializedName("id")
@Expose
private String id;
@SerializedName("token")
@Expose
private String token;
@SerializedName("email")
@Expose
private String email;
@SerializedName("firstName")
@Expose
private String firstName;
@SerializedName("lastName")
@Expose
private String lastName;
public User(String id, String token, String email, String firstName, String lastName) {
this.id = id;
this.token = token;
this.email = email;
this.firstName = firstName;
this.lastName = lastName;
}
//getters &setters...
}
邮递员请求:
{
"email":"test@email.com",
"password":"123456"
}
邮差:
{
"success": true,
"payload": {
"email": "test@email.com",
"firstName": "test",
"lastName": "test",
}
}
我也收到200条回复,但身体上没有数据
答案 0 :(得分:1)
创建这样的新模型
public class ResponseApi{
boolean success;
User payload;
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public User getPayload() {
return payload;
}
public void setPayload(User payload) {
this.payload = payload;
}
}
然后像这样更改代码
public interface NetworkAPI {
@POST("users/login")
Call< ResponseApi > login(@Body UserLogin userLogin);
}
希望它能正常工作。由于结构不同,翻新实际上无法解析json对象。