android–Retrofit 2:responseBodyConverter转换为null对象

android–Retrofit 2:responseBodyConverter转换为null对象,第1张

概述我正在使用最新的(截至目前的2.0.0-beta4)版本的Retrofit.当从服务器接收200OK代码时,一切正常.但我也想处理不好的响应,例如代码401.所以,我必须得到错误响应代码,以确切地确定要执行的 *** 作并显示适当的数据:@OverridepublicvoidonResponse(Call<LoginResponse>call,Respon

我正在使用最新的(截至目前的2.0.0-beta4)版本的Retrofit.当从服务器接收200 OK代码时,一切正常.但我也想处理不好的响应,例如代码401.所以,我必须得到错误响应代码,以确切地确定要执行的 *** 作并显示适当的数据:

@OverrIDepublic 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 – Retrofit 2:responseBodyConverter转换为null对象全部内容,希望文章能够帮你解决android – Retrofit 2:responseBodyConverter转换为null对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1097383.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存