gpt4 book ai didi

android - 改造 2 : responseBodyConverter converts to null object

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:41:35 28 4
gpt4 key购买 nike

我正在使用最新的(截至目前为 2.0.0-beta4)版本的 Retrofit .当从服务器收到 200 OK 代码时,一切正常。但我也想处理不正常的响应,例如代码 401。因此,我必须获取错误响应代码才能准确确定要执行的操作并显示适当的数据:

@Override
public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) {
if (response != null && !response.isSuccess() && response.errorBody() != null) {
Converter<ResponseBody, APIError> errorConverter = retrofit.responseBodyConverter(APIError.class, new Annotation[0]);
try {
APIError error = errorConverter.convert(response.errorBody());
Toast.makeText(getContext(), "code = " + error.getCode() + ", status = " + error.getStatus(), Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
} else if (null != response) {
if (response.isSuccess()) {
LoginResponse loginResponse = response.body();
Toast.makeText(getContext(), "Successful login: " + loginResponse.getId(), Toast.LENGTH_SHORT).show();
}
}
}

APIError.java

public class APIError {
String name;
int status;
String message;
int statusCode;
String code;
String stack;

public String getName() {
return name;
}

public int getStatus() {
return status;
}

public String getCode() {
return code;
}
}

服务器的错误响应

{
"error": {
"name": "Error",
"status": 401,
"message": "login failed",
"statusCode": 401,
"code": "LOGIN_FAILED",
"stack": "Error: login failed"
}
}

但是 errorConverter.convert() 返回一个具有空值的对象。我看过similar posts , 但它没有帮助。

代码有什么问题?

最佳答案

futurestud.io 中找到了答案博客评论:

APIError.java 更改为:

public class APIError {

Error error;

public Error getError() {
return error;
}

public static class Error {

String name;
int status;
String message;
int statusCode;
String code;
String stack;

public String getName() {
return name;
}

public int getStatus() {
return status;
}

public String getCode() {
return code;
}

}
}

关于android - 改造 2 : responseBodyConverter converts to null object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36350356/

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