重试 HTTP(S) POST,直到在 Android 上成功

2023-12-26

我有一些数据将通过 http(s) 从 Android 应用程序发送到服务器。需要按顺序发送。

是否已经存在一种对 http 请求进行排队(针对同一服务器)并重试它们直到完成(不一定成功)的方法?

我的问题是如果没有网络覆盖,http请求可能会失败。应该有某种形式的指数退避,或者一个侦听器(用于网络重新连接)来提示重试队列的头部。

我可以自己写这个,但我想检查一下我没有重新发明轮子。


有几种选择可以做到这一点:

Volley:

RequestQueue queue = Volley.newRequestQueue(ctx); // ctx is the context
StringRequest req = new StringRequest(Request.Method.GET, url,
    new Response.Listener<String>() {
        @Override
        public void onResponse(String data) {
            // We handle the response                           
        }
    },
    new Response.ErrorListener() {
        @Override
            // handle response
        }
    );
queue.add(req); 

OkHttp:

OkHttpClient client = new OkHttpClient();
client.newCall(request).enqueue(new Callback() {
    @Override
    public void onFailure(Request request, IOException e) {
        // Handle error
    }

    @Override
        public void onResponse(Response response) throws IOException {
        //handle response
    }
});

或者您可以在请求中使用计数器并让服务器对它们进行排序。 如果您有兴趣了解有关 Android Http 库的更多详细信息,我最近写了一篇文章。看看here http://www.survivingwithandroid.com/2016/07/android-http-library.html

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

重试 HTTP(S) POST,直到在 Android 上成功 的相关文章

  • 处理 SavedInstances 并恢复活动

    基本上我的应用程序有 2 个活动 说 A 和 B A 启动 B Activity B 播放音乐并且还有通知 情况 1 当视图仍在活动 B 上时 我按主页按钮 然后单击通知 活动 B 将打开 其视图完好无损并播放音乐 因为在清单中我使用 an
  • 如何在 Android 中的 Chrome 或 Firefox 等特定浏览器的 Web 视图中加载应用程序

    我是 Android 新手 我正在做一个应用程序 我需要在平板电脑上的 Web 视图中加载现有的应用程序 在平板电脑中 当我使用 Web 视图加载应用程序时 我的应用程序将加载到默认浏览器中 如何在平板电脑上的 Web 视图中的特定浏览器
  • animation.start() 或animation.startNow() 不会立即开始动画

    我有一个奇怪的问题 有时应该淡出我的控件 ImageButton 的动画不会立即启动 我使用淡出动画来隐藏它 然后在 myListener 的末尾 onAnimationEnd 中 我将新资源作为按钮上的图像 我的应用程序代码中的某处 An
  • 在android Gridview中合并行和列

    我正在android中做一个图像查看页面 我需要在某些地方合并行 在某些地方合并列 我们可以在gridview中做到这一点吗 如果我们选择任何合并图像 则应选择整个图像视图 请任何人告诉我一个建议 提前致谢 Try 非对称网格视图 http
  • 如何使用onDraw(Canvas)获取WebView的位图快照(Android)

    我曾经使用 capturePicture 方法来制作 WebView 的快照 此方法在 API 级别 19 中已弃用 该文档说 使用 onDraw Canvas 获取 WebView 的位图快照 但我真的不知道它是什么意思 你能教我如何解决
  • 通过模拟器控制台或 ADB 更改 Android 模拟器方向

    我正在尝试构建一个自动化测试框架 用于检查应用程序应该响应的基本内容 而不会崩溃 其中之一是检查应用程序是否正确响应配置更改 现在 由于它是自动化的 我必须以编程方式在横向和纵向之间切换模拟器的方向 并观察它是否崩溃 大写 因为有很多与 c
  • Java Junit 测试 HTTP POST 请求

    我需要测试以下方法而不改变方法本身 该方法向服务器发出 POST 方法 但我需要制作一个独立于服务器的测试用例 在将其重定向到本地文件之前 我测试了类似的方法 但为此我将协议指定为文件 主机名指定为 localhost 端口指定为 1 我的
  • 如果未安装应用程序,深层链接将重定向到 Play 商店

    我在我的应用程序中使用深度链接的概念 我真正想要的是 当我共享我的应用程序中的链接时 它工作正常 它会转到我想在我的应用程序中打开的活动 但问题是当用户没有这个时应用程序此链接通过手机浏览器打开 显示错误 未找到 但如果未安装应用程序 我想
  • 返回到上一个活动的最后状态

    我有两个活动 A 和 B 当应用程序启动时 活动 A 会被加载 我会从数据库将数据加载到其中 我可以毫无问题地转到活动 B 但是当我返回活动 A 时 会查看旧数据一段时间 然后重新加载活动 知道如何解决这个问题吗 在从数据库加载数据之前清除
  • Ionic 框架 - Config.xml

    我需要修改 config xml 文件 因此在针对 Android 进行编译时我会获取以下权限
  • RecyclerView 单击将数据传递到新活动

    我正在制作一个包含三个选项卡的应用程序 每个选项卡都有一个带有两个文本的 recyclerview 我希望用户能够单击任何 recyclerview 项目 并且该项目中的文本应传递到新活动 这是应用程序外观的图像 https i stack
  • 绘制平滑曲线

    我想创建更平滑的曲线 而不仅仅是线角 这是我现在画的图 这是我的代码 case FREEHAND float pts float ptk ptk new float 2 imageMatrix invert inv if mCurrentS
  • 作为 ViewPager 的一部分更新 ListFragment 中的数据

    我在 Android 中使用 v4 兼容性 ViewPager 我的 FragmentActivity 有一堆数据 这些数据将以不同的方式显示在我的 ViewPager 的不同页面上 到目前为止 我只有同一个 ListFragment 的
  • RxJava android mvp 单元测试 NullPointerException

    我是 mvp 单元测试的新手 我想对演示者进行一个非常基本的测试 它负责登录 我只想断言 view onLoginSuccess 这是演示者代码 public LoginPresenter LoginViewContract loginVi
  • Angular2:动态同步http请求

    Goal 发出一系列同步 http 请求并能够将它们作为一个可观察流进行订阅 示例 不工作 let query arr test1 test2 test3 function make request query arr if query a
  • Android Studio - 无法解析符号“firebase”

    我目前正在将应用程序升级到新的 Firebase 版本 我按照指南进行操作 包括classpath com google gms google services 3 0 0 在我的项目 build gradle 的依赖项中以及compile
  • Android:是否可以在可绘制选择器中使用字符串/枚举?

    问题 Q1 有人设法让自定义字符串 枚举属性在 xml 选择器中工作吗 我通过以下 1 获得了一个布尔属性 但不是字符串属性 编辑 感谢您的回答 目前 android 仅支持布尔选择器 原因请参阅已接受的答案 我计划实现一个复杂的自定义按钮
  • 如何在android中将文本放在单选按钮的左侧

    我想将单选按钮的文本放在左侧而不是右侧 我找到了这个解决方案
  • 我想要有条件的登录导航,没有 MAIN 片段或按钮

    我正在使用 Android Jetpack 导航组件 实时数据和 Firebase 我希望工作流程就像用户打开应用程序时一样 然后根据登录 注销状态导航到登录 配置文件片段 而不需要任何主片段或按钮 请 我的应用程序中没有主要片段 用户启动
  • 连接到具有相同 SSID 的最强接入点(信号最强的接入点)

    我正在编写一个程序来始终连接到最强的接入点 我的意思是信号最强的接入点 首先 我扫描所有可用的 WiFi 网络 然后限制它们仅查看具有相同 SSID 的网络 这样我就可以看到一个网络的所有AP 当我连接到该网络时 它没有连接到最强的信号 但

随机推荐

  • 检查某项是否存在,如果不存在则报错

    我想使用 PowerShell 检查 IIS Web 应用程序是否存在 或可能存在其他类型的项目 我可以这样做Get Item 但是如果该项目不存在 则会报告错误 这会误导运行脚本的用户 看起来好像出了问题 而实际上一切都很好 我该如何做到
  • 如何终止 MySQL 连接

    我正在使用 MySQL 构建一个网站 我正在使用 TOAD for MySQL 突然无法连接到数据库 因为出现错误 太多联系 Toad for MySQL 是否有任何方法可以查看现有连接以便能够终止它们或简单地关闭所有连接 不 有没有内置
  • 休眠:内存问题?缺点?

    我正在使用 Hibernate 3 6 直到今天我还没有发现使用它的任何缺点 但今天有人告诉我 当项目变大时 使用 Hibernate 的应用程序会出现内存问题 发生这种情况是因为与不使用 hibernate 的应用程序相比 需要创建和存储
  • Flutter 在 facebook 应用 android 和 ios 中打开 facebook 链接

    在我的应用程序中 我存储了 Facebook 网址 我想在 Facebook 应用程序中打开它们 而不是在浏览器中 我尝试使用flutter url launcher 包但它在默认浏览器中打开链接 我想要的是直接打开链接进入脸书应用程序 谁
  • Python 中的 RAII - 离开范围时自动销毁

    我一直在努力寻找RAII https en wikipedia org wiki Resource acquisition is initialization在Python中 资源分配即初始化是 C 中的一种模式 其中 对象在创建时就被初始
  • C 中的字符与多个字符的比较

    如何在不使用 if 的情况下将 C 中的字符与其他字符进行比较 有大量的 例如 假设我有一个名为 i 的字符 我想将其与其他 8 个字符进行比较 而这些字符之间没有任何联系 如果 i 至少等于这 8 个字符中的一个 则表达式为 true 像
  • Admob ( GoogleMobileAds 8.0.0 ) iOS SDK - 未找到 GADInterstitial API,如何使用 GADInterstitialAd - 请提供示例代码?

    以下行没有错误 import
  • 如何增加消息头

    Spring Integration Java DSL 有没有办法修改现有的消息头 我正在使用 SI Java DSL 重新实现下载重试机制 并且希望在发生失败时增加保存下载尝试的消息标头 然后根据与限制相比的尝试次数路由消息 我的路由基于
  • 如何将 google-chrome 设置为 git 默认浏览器

    I want GIT默认情况下在 Chrome 浏览器中打开帮助页面 尽管 Windows 7 默认浏览器是 IE 但由于其他原因我无法更改 我已将以下内容添加到 git 配置文件中 web browser chrome browser c
  • 如何在Java中使用图形输入板? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 几周前 我购买了 Wacom Bamboo 绘图板 我想开发一个小型的java应用程序 它可以捕获用户
  • Titanium 安装后 NPM install -g 不起作用

    我已经在我的 mac 上安装了 Titanium 现在每当我尝试全局安装任何 npm 软件包时都会失败 我的安装的输出是 npm http 304 https registry npmjs org loggly npm http GET h
  • 如何创建一个开关案例,案例是间隔?

    我想创建一个开关 案例 其中案例可以有间隔作为条件 例如 switch 1 lt 21 do one stuff 21 31 do another 我怎样才能达到这个结果 在Python 3 10中 https docs python or
  • Azure 上的 Asp.net MVC 5.2.2

    将 mvc nuget 包从版本 5 1 0 升级到 5 2 2 后 我们在 Azure 上的计算机 webrole 拒绝启动 Web 角色 它处于回收状态 我在事件日志中发现了一个错误 The description for Event
  • 如何将字符串截断为最多 N 个字符?

    预期的方法String truncate usize https doc rust lang org std string struct String html method truncate失败是因为它不考虑 Unicode 字符 考虑到
  • 如何处理 cv::VideoCapture 解码错误?

    我使用 OpenCV 的 VideoCapture 使用 ffmpeg 支持编译 从 IP 摄像机流式传输 H264 内容 到目前为止 一切正常 但每隔一段时间我就会遇到解码错误 我猜是来自 ffmpeg h264 0x103006400
  • 查找单个元素上的所有数据属性

    有人知道一种快速有效的方法来从单个元素中获取所有数据属性吗 我意识到 jQuerys data 会这样做 但是它不会给我使用 attr 设置的数据属性 除非我首先使用 data 选择数据属性 此外 您无法通过使用 data 添加的数据属性来
  • 如何在 Swift 中将 [Int8] 转换为 [UInt8]

    我有一个仅包含字符的缓冲区 let buffer Int8 然后我需要将其传递给一个函数process以 UInt8 作为参数 func process buffer UInt8 some code 传递 Int8 缓冲区以转换为 Int8
  • 按年龄对某个范围内的用户进行分组

    我有一些数据需要进行一些统计 我需要按年龄对用户进行分组 var byAge displayResult GroupBy x gt x Age 我可以按照上面的方法做 然而 这给了我 19 20 21 等年龄 我想要的是按 10 岁对年龄进
  • 使用 REST API 创建项目后,将用户作为管理员分配给项目 - Azure DevOps

    我正在尝试将用户分配为项目的管理员 并通过 Azure DevOps 中的 REST API 更改所有者 你们中的任何人都可以向我指出一些如何完成此操作的文档吗 我已经查看了 UserEntitlements API 和 Project A
  • 重试 HTTP(S) POST,直到在 Android 上成功

    我有一些数据将通过 http s 从 Android 应用程序发送到服务器 需要按顺序发送 是否已经存在一种对 http 请求进行排队 针对同一服务器 并重试它们直到完成 不一定成功 的方法 我的问题是如果没有网络覆盖 http请求可能会失