Android volley:如何处理错误响应

2023-12-05

我实现了一个带有 volley 库的 Android 应用程序来连接我的数据库。与“get”和“post”请求的连接有效,但服务器响应不起作用。 发生这种情况是因为错误响应会自动捕获错误(例如,我的服务器响应代码为 201 表示登录成功,但齐射将其理解为错误)。

我重写 Request 类中的 parseNetworkError:

 @Override
    protected VolleyError parseNetworkError(VolleyError volleyError) {
        String parsed;
        NetworkResponse networkResponse = volleyError.networkResponse;
        if(networkResponse != null && networkResponse.data != null) {
            try {
                parsed = new String(networkResponse.data, HttpHeaderParser.parseCharset(networkResponse.headers));
            } catch (UnsupportedEncodingException var4) {
                parsed = new String(networkResponse.data);
            }
            NetworkResponse response = new NetworkResponse(networkResponse.data);
            Response<String> parsedResponse;
            switch(response.statusCode){
                case 204:                        
                    ...
                case 401:
                    ...
                default:
                    return volleyError;
            }
        }

        return super.parseNetworkError(volleyError);
    }

问题是 VolleyError。此类扩展了 Exception 并且不包含信息(代码错误)。

我该如何解决这个问题?


你可以这样处理

@Override
public void onErrorResponse(VolleyError error) {
    // Handle your error types accordingly.For Timeout & No connection error, you can show 'retry' button.
    // For AuthFailure, you can re login with user credentials.
    // In this case you can check how client is forming the api and debug accordingly.
    // For ServerError 5xx, you can do retry or handle accordingly.
    if( error instanceof NetworkError) {
    //handle your network error here.
    } else if( error instanceof ServerError) {
    //handle if server error occurs with 5** status code
    } else if( error instanceof AuthFailureError) {
    //handle if authFailure occurs.This is generally because of invalid credentials
    } else if( error instanceof ParseError) {
    //handle if the volley is unable to parse the response data.
    } else if( error instanceof NoConnectionError) {
    //handle if no connection is occurred
    } else if( error instanceof TimeoutError) {
    //handle if socket time out is occurred.
    }

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

Android volley:如何处理错误响应 的相关文章

  • 如何从 SDK 实现每个会话的 Google Places 自动完成功能?

    是否可以从 Android 和 iOS 应用程序的 place sdk 实现基于会话的自动完成 根据 6 月 11 日生效的新 Google 地图框架定价 对自动完成的请求可以分为基于击键 会话的请求 我找不到描述实施步骤的文档 除了这个参
  • Android 中多个蓝牙连接的自定义 UUID

    我有一个 Android 设备作为服务器连接到多个蓝牙 Android 客户端 我了解 UUID 的概念以及它的独特之处 我的问题是 我可以为连接到我的服务器的所有客户端使用相同的 UUID 吗 如果没有 我如何以编程方式为我的客户端生成
  • Cheesesquare:enterAlways 会产生错误的布局

    Adding enterAlways到 Cheesesquare 演示的滚动标志
  • 从响应中获取标头(Retrofit / OkHttp 客户端)

    我正在使用 Retrofit 与 OkHttp 客户端和 Jackson 进行 Json 序列化 并希望获取响应的标头 我知道我可以扩展 OkClient 并拦截它 但这发生在反序列化过程开始之前 我基本上需要的是获取标头以及反序列化的 J
  • Recyclerview 动态部分不使用任何第三个库

    我想将标头添加到 recyclerview 我正在尝试使用来实现它 Override public int getItemViewType int position depends on your problem if position 0
  • 如何使用 Google Maps for Android V2 处理地图移动结束?

    我想在地图中心更改后立即对地址进行地理编码 如何使用新的 Android 版 Google 地图 V2 处理地图移动 我说的是用户用手指拖动地图的情况 查看新的地图 API Override public void onMapReady G
  • Android应用程序组件销毁和重新创建的详细信息

    有人可以向我提供一些具体的 值得信赖的 最好是简洁的 信息 内容如下 系统销毁和 如果适用 重新创建组件的顺序 片段 活动 活动的线程 异步任务 计时器 静态数据 类何时卸载 其他类中的线程 异步任务 定时器 主机 TabActivity
  • 如何在我现有的 Android 应用程序中使用 Telegram API(包括聊天应用程序)?

    我想使用 telegram API 在我现有的 Android 应用程序中开发聊天功能 我不知道如何实施 我认为 看看Telegram 数据库库 测试版 从这里TDLib https core telegram org tdlib 俄语 但
  • ExoPlayer2 - 如何使 HTTP 301 重定向工作?

    我开始使用 ExoPlayer 来传输一些音频 一切都很顺利 直到我遇到一个带有 301 永久移动 重定向的 URL ExoPlayer2 默认情况下不处理该问题 我已经看过这个线程 https github com google ExoP
  • 当它的父级是 ConstraintLayout 时设计 CardView 吗?

    我在编辑包含Relativelayout的Cardview内的RelativeLayout时搞砸了 ConstraintLayout会将相对布局的wrap content更改为0并添加工具 layout editor absoluteX 1
  • Android:后台Activity可以执行代码吗?

    后台的活动是否被视为 正在运行 并且可以执行代码 还是处于挂起状态 他们暂停了 活动生命周期 http developer android com reference android app Activity html ActivityLi
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • 图像作为电子邮件附件

    我想构建一个应用程序 我可以在电子邮件中附加图像 打开图像并将其设置为我的壁纸 我想让它跨平台 所以你能告诉我是否可以使用phonegap 或者我是否必须为iphone和android构建一个本机应用程序 您好 如果您只想通过电子邮件附加图
  • 使用片段时应用程序崩溃

    我正在处理碎片和 我的代码中有一个我找不到的问题 logcat 指向我的一个片段中的这段代码 Override public View onCreateView LayoutInflater inflater ViewGroup conta
  • 对于一个单元格,RecyclerView onBindViewHolder 调用次数过多

    我正在将 RecyclerView 与 GridLayoutManager 一起使用 对于网格中的每个项目 我需要调用 REST api 来检索数据 然后 从远程异步获取数据后 我使用 UIL 加载 显示图像 一切似乎都很好 但我发现 on
  • okhttp 获取失败响应

    我已经在我的 android 客户端中实现了 okhttp 来进行网络调用 当我收到失败响应时 我会收到失败代码以及与该代码相关的文本作为消息 但我没有收到服务器发送给我的自定义失败响应 在我实施的代码中的失败响应中 我收到的消息只是 错误
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 没有用于警告的设置器/字段 Firebase 数据库检索数据填充列表视图

    我只是想将 Firebase 数据库中的数据填充到我的列表视图中 日志显示正在检索数据 但适配器不会将值设置为列表中单个列表项中的文本 它只说 没有二传手 场地插入值 这让我觉得我的设置器没有正确制作 但 Android Studio 自动
  • 没有支持 FEATURE_CAMERA_EXTERNAL 的 Android 设备

    根据this doc https source android com devices camera external usb cameras一些 Android 设备允许使用 Camera2 API 访问外部 USB 摄像头 我检查了大约
  • 发布的 Android apk 出现错误“包文件未正确签名”

    我最近将我的应用程序上传到 Android 市场 但是由于错误 下载时它拒绝运行 包文件未正确签名 我首先使用 eclipse 发布了数据包 右键单击导出 创建密钥库然后发布 但它拒绝工作 然后我下载了 keytool 和 jarsigne

随机推荐

  • 更改 ApexCharts 中范围柱形图的颜色

    我正在尝试使用 ApexCharts 为我的一个项目实现瀑布图 ApexCharts 不提供开箱即用的此图表 因此 我正在尝试将范围柱形图修改为瀑布图 这几乎是我所需要的 但我需要更改范围减小的列的颜色 这里中间的列有蓝色 但我需要将其更改
  • 如何在图表上显示边标签?

    我正在尝试使用 sigInst parseGexf data test gexf 加载 gexf 文件 要创建带有标签的边 我在 gexf 文件中有这一行
  • >> 0 和 >>> 0 的目的

    此示例代码来自 Mozilla 的 JS 参考使用 RHS 参数为 0 的 gt gt 和 gt gt gt 运算符 我猜这是 Math floor 的替代方案 它具有性能优势 因为它使用内置运算符而不必查找函数 但是 gt gt 与 gt
  • 正则表达式:删除字符串中可以包含其他句点的最后一个句点(挖掘输出)

    我正在尝试解析linux的输出dig使用正则表达式一次命令并执行多项操作 假设我喜欢主机mail yahoo com usr bin dig nocomments noquestion noauthority noadditional no
  • GIT rebase 需要重新提交更改

    首先 我是 git 分支的新手 我不知道每个功能分支都应该从master并且仅使用与下一个功能分支具有这种关系的先决功能分支 我有三个分行 master feature 1 and feature 2全部推送到 Bitbucket 存储库
  • 将“事件”添加到函数后出现“位置参数”错误

    我正在尝试在我的脚本中添加键盘绑定 我的脚本基本上是一个搜索功能 在输入框中输入名称 它将在数据库中查找该名称及其数据并显示出来 我使用菜单中的一个按钮来实现搜索功能 但我想添加一个键盘快捷键 Ctrl F 以立即访问搜索功能对话框 roo
  • 使用 FileField 在 Django 表单中生成带有“accept”属性的输入标签

    我想创建一个表单来上传和保存 iOS Safari 中的视频 它支持输入标签的 accept 属性 例如
  • 在 OoOE 处理器中,内存存储真的可以重新排序吗?

    我们知道两条指令可以通过面向对象处理器 例如 有两个全局变量在不同线程之间共享 int data bool ready 作家线程产生data并打开一个标志ready允许读者使用该数据 data 6 ready true 现在 在 OoOE
  • 增加使用数字和字符(也称为 Base36 数字)的索引

    我有一个基于字符串的代码 长度可以是两个或三个字符 我正在寻找一些帮助来创建一个可以增加它的函数 代码的每个 数字 的值为 0 到 9 和 A 到 Z 一些例子 序列中的第一个代码是 000 009 下一个代码是 00A00D 下一个代码是
  • C/C++ 宏而不是 const [重复]

    这个问题在这里已经有答案了 宏观 define MAX 80相当于const int MAX 80 两者都是恒定的 不能修改 使用宏而不是常量不是更好吗 常量整数占用内存 宏的名称被预处理器替换为其值 对吗 所以不需要内存 为什么我要使用
  • 修复有问题的 unicode 字符串

    有错误的 unicode 字符串是指其中意外编码了字节的字符串 例如 Text Windows 1255 编码 x99 x8c x85 x8d 统一码 u u05e9 u05dc u05d5 u05dd 有问题的 Unicode u x99
  • EDSDK 回调不起作用

    我有一个可用的命令行应用程序 使用 EDSDK v2 13 但是 当我注册回调时 会出现一系列属性事件 然后就什么也没有了 我已经纠正了这个循环 如下所示 while kbhit EdsOpenSession camera Sleep 10
  • 使用自定义 data-id 加载模态

    我的一个网站有问题 我有一些这样的列表链接 ul li a Room 10 a li li a Room 20 a li ul On my myModal 我希望表单出现编辑信息 所以我通过了data id 这是我数据库中的 id HTML
  • 在 PrimeFaces 的文件上传侦听器中验证上传图像的尺寸

    我正在使用上传图像
  • Cakephp 中的 WordPress

    我已经在 Cakephp 中安装了 WordPress app webroot blog 文件夹并将 WordPress 永久链接设置更改为月份和名称 例如 http abc com blog 2013 02 sample post 现在
  • 当文件确实存在时,C# System.IO.FileNotFoundException

    我正在尝试从 ASP NET Core 中的操作返回文件 public IActionResult GetFile string filePath return File home me file png application octet
  • Jqgrid。从键值中找到rowId

    我有一个基本的 jqgrid 实现 fsJqGrid jqGrid datatype local height 175 colNames FeatureId Name colModel name FeatureId index Featur
  • IIS7:缓存设置不起作用...为什么?

    我的 IIS7 web config 设置为以下内容 其中包含静态资产文件夹 不在 ASP NET 应用程序或任何其他内容中
  • ObServer 发出选择性 D-BUS 信号(单播信号)

    我遇到的情况是 我有一个 ObServer 对象和一组客户端 ObServer和客户端通过D BUS IPC 连接 ObServer 为所有客户端提供通用接口 但是 ObServer 有时需要通知客户端一些事件 客户端监听 ObServer
  • Android volley:如何处理错误响应

    我实现了一个带有 volley 库的 Android 应用程序来连接我的数据库 与 get 和 post 请求的连接有效 但服务器响应不起作用 发生这种情况是因为错误响应会自动捕获错误 例如 我的服务器响应代码为 201 表示登录成功 但齐