Java 改装处理成功和错误响应
我正在使用改型连接到REST服务器,我需要处理成功响应和错误响应。我基于来构建我的客户 例如,在获取令牌方法上,服务器成功响应具有以下结构:Java 改装处理成功和错误响应,java,android,retrofit,Java,Android,Retrofit,我正在使用改型连接到REST服务器,我需要处理成功响应和错误响应。我基于来构建我的客户 例如,在获取令牌方法上,服务器成功响应具有以下结构: {"status":0, "result":"7f4e879d1f64b10b5719a5b0ab6c7419"} 故障响应为: {"status":-1, "result":"Password is not valid"} 我的问题是,应用程序将错误响应视为成功。我的代码是: -Rest api方法接口: public interface Resta
{"status":0, "result":"7f4e879d1f64b10b5719a5b0ab6c7419"}
故障响应为:
{"status":-1, "result":"Password is not valid"}
我的问题是,应用程序将错误响应视为成功。我的代码是:
-Rest api方法接口:
public interface Restapi {
@GET("/?method=get_token")
void login(@Query("login") String login, @Query("password") String password, RestCallback<LoginResponse> callback);
}
-模型错误响应:
public class LoginResponse {
//With @SerializedName("status") neither working
public int status;
public String result;
//Getters and setters
}
public class RestError {
public int status;
public String message;
//Getters and setters
}
-Rest回调:
public abstract class RestCallback<T> implements Callback<T> {
public abstract void failure(RestError restError);
@Override
public void failure(RetrofitError error) {
RestError restError = (RestError) error.getBodyAs(RestError.class);
if (restError != null)
failure(restError);
else {
failure(new RestError(-1, error.getMessage()));
}
}
}
错误在哪里?这不是您的Android代码错误,改型正在发挥作用。您收到错误案例的成功回调的原因是您的服务器正在返回成功状态代码(200-299)
在这种情况下,只有在网络连接错误或服务器脱机时才会调用故障回调。服务器的响应代码是什么?另外,在
try catch
中包装error.getBodyAs
。虽然响应不正确,但服务器返回HTTP 200。因此,这就是API设计的问题。谢谢Emma和@tibo
public class RestClient {
private static Restapi REST_CLIENT;
static {
setupRestClient();
}
public static Restapi get() {
return REST_CLIENT;
}
private static void setupRestClient() {
RestAdapter restAdapter = new RestAdapter.Builder()
.setLogLevel(RestAdapter.LogLevel.FULL)
.setEndpoint(Constants.getEndpoint())
.build();
REST_CLIENT = restAdapter.create(Restapi.class);
}
}