gpt4 book ai didi

android - 改造 - 不同的 react

转载 作者:行者123 更新时间:2023-12-02 08:20:31 25 4
gpt4 key购买 nike

我正在使用 Retrofit 在 Android 中使用 API。成功响应看起来与错误/失败响应不同。我怎样才能做到这一点?

我目前有这方面的影响:

Call<AuthenticateUserResponse> authenticateUser(String id);

最佳答案

您可以使用基本 Response 扩展您的 Response 并检查是否有错误或成功。下面是一个基本响应 bean 示例:

public class BaseResponse {
@SerializedName("ResponseCode")
private int code;
@SerializedName("ResponseMessage")
private String message;
@SerializedName("ResponseText")
private String text;
}

我的 api 在每个响应器中返回 ResponseCodeResponseMessageResponseText,我从 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。您也不需要在每次响应中都返回此错误对象如果有错误,您可以在回复中返回。

在 Retrofit 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.
}
});

希望对您有所帮助。祝你好运!

编辑:您还可以使用泛型来处理基本的 api 响应。这是我的另一个 answer关于处理通用 api 响应。

关于android - 改造 - 不同的 react ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37663282/

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