如何处理Retrofit 2.0中的错误

2024-01-10

我想处理 Retrofit 2.0 中的错误

得到例如code=404 and body=null, but errorBody()包含数据在ErrorModel (Boolean status and String info).

This is errorBody().content: [text=\n{"status":false,"info":"Provided email doesn't exist."}].

我怎样才能得到这些数据?

谢谢你帮助我!

这是我的改造请求代码:

ResetPasswordApi.Factory.getInstance().resetPassword(loginEditText.getText().toString())
    .enqueue(new Callback<StatusInfoModel>() {
        @Override
        public void onResponse(Call<StatusInfoModel> call, Response<StatusInfoModel> response) {
            if (response.isSuccessful()) {
                showToast(getApplicationContext(), getString(R.string.new_password_sent));
            } else {
                showToast(getApplicationContext(), getString(R.string.email_not_exist));
            }
        }

        @Override
        public void onFailure(Call<StatusInfoModel> call, Throwable t) {
            showToast(getApplicationContext(), "Something went wrong...");
        }
    });

如果你想在错误响应到来时获取数据(通常是响应代码(200 除外))你可以在你的onResponse() method:

if (response.code() == 404) {
    Gson gson = new GsonBuilder().create();
    YourErrorPojo pojo = new YourErrorPojo();
    try {
         pojo = gson.fromJson(response.errorBody().string(), YourErrorPojo.class);
         Toast.makeText(context, pojo.getInfo(), Toast.LENGTH_LONG).show();
    } catch (IOException e) { 
      // handle failure at error parse 
  }
}

生成时YourErrorPojo.class执行以下步骤:

  1. Go to Json 架构 2 Pojo http://www.jsonschema2pojo.org/

  2. 粘贴你的例子Json,然后选择源类型Json, 注释Gson

  3. 你的例子Json is : {"status":false,"info":"Provided email doesn't exist."}

  4. Click Preview它会生成你的Pojo为你上课。

将其添加到您的build.gradle : compile 'com.google.code.gson:gson:2.7'

I used Gson在此解决方案中,但您可以获得Json字符串使用:response.errorBody().string()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理Retrofit 2.0中的错误 的相关文章

随机推荐

  • 如何使用express-uploadfile从POST读取文本文件?

    我正在尝试制作 Node js 服务器 用于在那里上传文本文件 所以我使用 POST 来获取本地用户的文本文件 然后我想让服务器读取该文件 我想我可以让用户上传他的本地文本文件 我可以获取上传文件的描述 但很难让服务器读取文件的实际字符串
  • Chrome 的自动填充隐藏文本输入的背景图像

    成功禁用自动填充黄色背景颜色后 我偶然发现了另一个功能 我的每个输入元素都有一个背景图像 每次我关注文本输入时 浏览器都会在下拉列表中建议我之前使用的值 选择一个值后 自动填充会覆盖整个背景并隐藏图像 这是我的 html 和 css 在 J
  • NHibernate:System.Argument异常:已添加具有相同键的项目

    我遇到了一个很难重现的偶发错误 我的第一个猜测是 不知怎的 我有一个泄漏的休眠会话 但是当我运行休眠分析器 http nhprof com 我没有看到太多异常 MVC 2 0 流畅版本1 1 0 685 NHibernate 版本 2 1
  • 使用三元运算符初始化结构

    为什么三元运算符不能用于初始化结构类型 而可以用于初始化基类型 例如int 示例代码 include
  • javascript向所有函数添加原型方法?

    有没有一种方法可以在不使用原型库的情况下向所有 javascript 函数添加方法 类似于 Function prototype methodName function return dowhateverto this 这是我到目前为止所尝
  • Perl 6 中有快速并行“for”循环吗?

    给定一些对 1 到 500000 之间的每个数字进行一些数学 转换的代码 我们有选择 简单的for循环 for 500000 gt i my result i 2 Str 在我的不科学基准测试中 这需要 2 8 秒 最规范的并行版本在一个P
  • 新的 SQL Server 用户登录失败

    我已在 SQL Server Management Studio SQL Server 2008 Express 的安全选项卡中创建了新用户 指定登录名 SQL Server 身份验证 输入密码 分配服务器角色sysadmin 映射到我的数
  • 如何检查元素是否在 iframe 内

    假设您有一个 DOM 节点 并且您想知道它是否位于 iframe 内 一种方法是检查它的父链 看看您是否在到达父窗口之前到达了 iframe 不过 我想知道是否有更快的方法来做到这一点 你也许可以检查ownerDocument财产 http
  • 强制使用 SSL:尝试确定托管应用程序的 DNC 进程的进程 ID 时发生错误

    我想在我的网站上强制使用 https 如果发现本文 https azure microsoft com en us documentation articles web sites configure ssl certificate 4 e
  • 使用 Perl 发送电子邮件

    我正在尝试使用 Perl 发送电子邮件 基本上我有一个 Perl 脚本 可以以良好的格式打印出报告 我希望通过电子邮件发送该报告 我怎样才能做到这一点 如果机器没有配置sendmail 我通常使用邮件 发送邮件 https metacpan
  • 如何根据位置分割字符串

    我想根据字符的位置拆分变量 生成的第一个字符串应具有指定位置之前的前一个位置 另一个字符串应包含其他部分 假设如果我有一个变量 var 2013AD 我想 var1 2013 and var2 AD 我怎样才能实现这个目标 嗯 要在这里使用
  • 如何使用 Selenium WebDriver 检查单选按钮?

    我想检查这个单选按钮 但我不知道如何检查 我的 HTML 是 div class appendContent div id contentContainer class grid list template gt div div div d
  • AEM Scheduler 的配置发生变化吗?

    我正在尝试为我的项目需求实现简单的调度程序 我的项目正在使用Adobe AEM 截至目前 我浏览了 Adob e 网站并尝试实现所提供的给定示例 但没有一个更新我的error log file package sling docu exam
  • Android 项目未解析任何静态资源

    由于某种原因 我的 android 项目无法解析 js css 图像的任何静态路径 而它在 web 和 ios 上运行良好 我没有使用离子 所以也许我错过了一些特定的东西 然而 所有这些文件都可以在 android 项目中使用 这是突出显示
  • 训练 Keras 模型会产生多个优化器错误

    所以我需要使用我自己的数据集重新训练 Tiny YOLO 我正在使用的模型可以在这里找到 keras yolo3 https github com qqwweee keras yolo3 我开始训练 遇到多个优化器错误 添加了错误代码以防止
  • Java 中的 Process.exitValue()

    下面是我用来简单地从命令行程序打开和关闭 Internet Explorer 的程序 我在 Windows XP 操作系统上使用 Java 6 运行我的程序 Runtime runtime Runtime getRuntime Proces
  • PHPUnit 严格模式 - 如何更改默认超时

    我想继续在严格模式下运行我的单元测试 以便我可以轻松地了解任何异常长的测试 但同时 1 秒的默认超时是不够的 我可以为所有测试更改它吗 我知道我可以使用以下命令为每个课程 和单独的测试 设置超时 short medium long注释 但是
  • 模型不学习

    背景 我有一个非常简单的脚本 它创建了一个 keras 模型 旨在充当异或门 我在中生成了 40000 个数据点get data功能 它创建两个数组 一个按某种顺序包含 1 和 0 的输入数组 以及一个 1 或 0 的输出 Issue 当我
  • 如何在手机上安装特定版本的 Android 进行测试?

    我的老板最近给了我一部 HTC Wildfire 手机 用于制作我们的一个移动应用程序的 Android 版本 这一切都很好 只是该应用程序需要 API 级别 8 即 Android 2 2 而手机本身只有 Android 2 1安装 经过
  • 如何处理Retrofit 2.0中的错误

    我想处理 Retrofit 2 0 中的错误 得到例如code 404 and body null but errorBody 包含数据在ErrorModel Boolean status and String info This is e