gpt4 book ai didi

java - 改造处理成功和错误响应

转载 作者:行者123 更新时间:2023-12-02 04:30:35 25 4
gpt4 key购买 nike

我正在使用 Retrofit 连接到 REST 服务器,我需要处理成功响应和错误响应。我根据this sample建立我的客户。

例如,在获取 token 方法中,服务器成功响应具有以下结构:

{"status":0, "result":"7f4e879d1f64b10b5719a5b0ab6c7419"}

失败响应是:

{"status":-1, "result":"Password is not valid"}

我的问题是应用程序将错误响应视为成功。我的代码是:

-Rest api方法接口(interface):

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
}

-休息回调:

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()));
}
}
}

-客户端类:

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);
}
}

哪里出错了?

最佳答案

这不是你的 Android 代码错误,改造正在发挥作用。您收到错误情况成功回调的原因是您的服务器返回成功状态代码 (200 - 299)。

这种情况下,只有在网络连接错误或者服务器离线的情况下才会调用失败回调。

关于java - 改造处理成功和错误响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31527840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com