1 回答
TA贡献1829条经验 获得超13个赞
在进行 Retrofit 调用时,不应为 Request 使用 POJO 类,而应使用与 Response 匹配的 POJO 类。因为这只是使用参数进行调用,所以您可能甚至不需要 Request 对象,但拥有一个也没有坏处。
您的代码看起来像这样:
Call<LoginResponse> call = apiLink.loginUser(useremail, userpassword);
call.enqueue(new Callback<LoginResponse>() {
@Override
public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) {
if(!response.isSuccessful()){
String code = Integer.toString(response.code());
Toast.makeText(LoginPage.this, code, Toast.LENGTH_LONG).show();
}
else {
LoginResponse postResponse = response.body();
Log.e("viewResponse",
postResponse.getSuccessResponse().toString());
return;
}
}
@Override
public void onFailure(Call<LoginResponse> call, Throwable t) {
Log.e("error in createNewUser", t.getMessage());
}
});
为了进一步解释发生了什么,当你创建你的参数化调用时,你告诉 Retrofit 使用哪个对象来解析响应,(如果你想使用一个对象作为发布主体数据,你需要以不同的方式声明你的 API):
@POST("auth/login")
Call<LoginResponse> loginUser(@Body LoginPost body);
Call<LoginResponse> call = apiLink.loginUser(LoginPost body);
添加回答
举报