您可以使用基本响应来扩展您的响应,并检查是否存在错误或是否成功。下面是一个基本响应 bean 的示例:
public class BaseResponse {
@SerializedName("ResponseCode")
private int code;
@SerializedName("ResponseMessage")
private String message;
@SerializedName("ResponseText")
private String text;
}
我的api返回ResponseCode
, ResponseMessage
and ResponseText
在每个响应者中,我都从 BaseResponse bean 扩展我的响应并检查是否有错误。
您可以将您的响应修改为 api 的返回方案。
编辑:这是您对 Api 的响应:
public class Error {
@SerializedName("ResponseCode")
private int code;
@SerializedName("ResponseMessage")
private String message;
@SerializedName("ResponseText")
private String text;
}
public class YourWrapperResponse {
@SerializedName("Error")
private Error error;
@SerializedName("AuthenticateUserResponse")
private AuthenticateUserResponse authenticateUserResponse;
}
你的电话将是这样的:
Call<YourWrapperResponse> authenticateUser(String id);
我给您提供的上面的示例是处理业务错误的示例,您会在每次成功的响应中得到这些错误。成功意味着 Http Status 200。您也不需要退回这个Error object
在你的每一个回应中。如果有错误您可以在回复中返回。
改造 2.0+ 中您需要检查您的请求是否成功。下面是一个关于它的例子:
Call<User> auth = YourApiProvider.getInstance().getServices().auth(userName, passowrd, grantType);
auth.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
if (response.isSuccessful()) {
// Here you get a 200 from your server.
}
} else {
// Here you get an authentication error.
// You can get error with response.code();
// You can get your error with response.errorBody();
// or you can get raw response with response.raw()
}
}
@Override
public void onFailure(Call<User> call, Throwable t) {
// Here you get error such as TimeOut etc.
}
});
我希望这会帮助你。祝你好运!
Edit:您还可以使用泛型来处理基本 api 响应。这是我的另一个answer https://stackoverflow.com/a/48624508/1559852关于处理通用 API 响应。