为什么 https 下载会暂停并显示 PAUSED_WAITING_TO_RETRY?

2024-02-02

我正在使用下载管理器 https://developer.android.com/reference/android/app/DownloadManager.html#STATUS_PAUSEDAndroid 中通过 https URL 下载文件的服务,例如https://www.antennahouse.com/XSLsample/pdf/sample-link_1.pdf https://www.antennahouse.com/XSLsample/pdf/sample-link_1.pdf。这些文件(当前)不受密码保护,以防产生任何影响。

一旦我将下载请求加入队列,DownloadManager 就会开始下载,但它似乎挂起。当我检查状态时,我得到

COLUMN_BYTES_DOWNLOADED_SO_FAR: 0
COLUMN_STATUS: 4
COLUMN_REASON: 1

COLUMN_STATUS 4 是状态_暂停 https://developer.android.com/reference/android/app/DownloadManager.html#STATUS_PAUSED,“当下载等待重试或恢复时。”

COLUMN_REASON 1 是PAUSED_WAITING_TO_RETRY https://developer.android.com/reference/android/app/DownloadManager.html#PAUSED_WAITING_TO_RETRY,“当下载由于某些原因而暂停时发生网络错误并且下载管理器在重试请求之前正在等待。”但似乎没有办法确定发生了什么网络错误。下载从未成功完成。

我检查了 logcat 监视器是否有相关警告和错误,但没有发现任何结果。

我已经在多个不同的服务器(内部和公共)上尝试过此操作,但结果相同。

没有明显的网络问题:Wi-Fi 连接已连接,并且可以下载使用 http:// 工作得很好:文件被立即下载并出现在指定目的地的文件系统中。

对于 https 下载,我们的服务器日志显示文件正在成功送达从服务器的角度来看。在 a 中测试相同的 https URLbrowser在笔记本电脑上成功下载文件,开发人员工具网络面板中没有出现任何明显问题或额外的协商。

我的代码(总结):

sManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
DownloadManager.Request req = new DownloadManager.Request(sourceURI);
final Uri destinationUri = Uri.fromFile(destinationFile);
req.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI
            | DownloadManager.Request.NETWORK_MOBILE)
        .setDestinationUri(destinationUri)
        .setMimeType(...);

long id = sManager.enqueue(req);

摘要:通过 DownloadManager 启动的 https 下载会无限期挂起,而相同的 https 下载在浏览器中工作正常,而纯 http 下载在使用 DownloadManager 的同一应用程序中工作正常。我得到的最好线索是PAUSED_WAITING_TO_RETRY表示“发生一些网络错误”。如何确定网络错误是什么?


直接原因似乎是CertificateException:CertPathValidatorException:Trust anchor for certification path not found.我发现了这一点直接使用 HttpURLConnection https://github.com/commonsguy/cw-omnibus/tree/v8.1/Service/Downloader(感谢@CommonsWare 的建议)而不是 DownloadManager,它可以更直接地访问异常。 (对于我们的内部服务器来说确实如此。我提到的示例 URL 似乎并非如此,它似乎与 DownloadManager 存在相同的问题......但也许同样的问题有不同的情况原因。)

根 CA(在所有情况下)是“AddTrust 外部 CA 根”,它位于设备上的受信任 CA 列表中,位于“设置”>“安全性”>“受信任凭据”下。那么,如果这是受信任的 CA 根,为什么会出现“未找到证书路径的信任锚”异常?

看起来有一个中间 CA 没有包含在服务器提供的链中,因为此处描述 https://developer.android.com/training/articles/security-ssl.html#MissingCa。事实上,使用openssl s_client -connect检查 CA 链,确认不包括中间 CA。这Android 文档文章 https://developer.android.com/training/articles/security-ssl.html#MissingCa建议两种可能的解决方案:将中间 CA 包含在服务器链中,或者通过创建特殊的 TrustManager 在应用程序中明确信任它们。我希望做前者。

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

为什么 https 下载会暂停并显示 PAUSED_WAITING_TO_RETRY? 的相关文章

  • 代码如何从 Android Gallery 加载图像

    我有用于从图库加载图像的代码 但我真的不明白它是如何工作的 这是代码 Override protected void onActivityResult int requestCode int resultCode Intent data s
  • 使用 android 将图像上传到 Flickr

    我需要将 Flickr 与 android 集成 我已完成身份验证 我需要将图像上传到 flickr 但我不知道如何执行相同操作 我参考文件 http www flickr com services api upload api html
  • Context.startForegroundService 然后没有调用Service.startForeground

    这是我的 BroadcastReciever 类 该类处理启动电话状态 Code public class BroadCastRecieverBoot extends BroadcastReceiver Override public vo
  • React-Native 中的导航抽屉

    我是反应原生的新手 不介意我问一个基本问题 我想知道 实现抽屉式导航的分步过程是什么 推荐链接这个链接 https github com react native community react native side menu usage
  • 将 React Native 应用程序嵌入到现有的 ios/android 应用程序中

    我需要知道是否可以在现有的 ios android 应用程序中 嵌入 一个 React Native 应用程序 而不共享 React Native 应用程序代码 我们目前有一个 React Native 应用程序 它使用一些插件依赖项 并被
  • Android 套接字和 HTTP 响应标头

    有趣的是 我可能无意中找到了解决方案是否可以使用普通套接字连接发送 HTTP 请求并接收没有标头的响应 https stackoverflow com questions 8320574 我希望我忽略了一些东西 无论如何 我正在连接到 We
  • Android 操作栏 SearchView 作为自动完成功能?

    我在操作栏中使用 SearchView 我想在搜索视图上使用自动完成功能来从数据库中获取结果 这可能吗 或者我是否需要使用自定义文本框 然后添加自动完成功能 所以我只需要对 v7 版本执行此操作 并沮丧地发现我不能简单地使用 ArrayAd
  • 为什么Android room不建议使用allowMainThreadQueries()?

    我正在创建一个小型应用程序 仅在数据库中保存一些计数器 如果不存在 请插入一个 如果是的话 增加更新 该应用程序没有任何用户界面 它是一个保存和读取数据 少量表 少量记录 的插件 我可以用吗允许主线程查询 在这种情况下 每次我读到一些关于这
  • 从txt文件中读取数据而不下载它?

    我想从提供的文本文件中解析信息 有没有一种方法可以在应用程序中执行此操作 而无需先下载文件 以某种方式传输文本内容 打开到 URL 的 Http 连接 使用内置 HttpURLConnection 或使用 commons httpclien
  • Google play APK 上传错误重复权限声明

    我尝试上传新的 apk 使用我自己的发布密钥存储签名 并在 google play 开发者控制台中收到以下错误 重复的许可声明 android permission ACCESS COARSE LOCATION 与不同 maxSdkVers
  • Android 中的处理程序到处理程序与 Messenger 到 Messenger 通信

    问题 使用起来是否 更好 更快且开销更少 Handler http developer android com reference android os Handler html与使用 Handler 通信相比信使 http develop
  • 使用audioSessionId值实例化AudioFx类?

    我已经阅读了 Android API 并尝试在互联网上搜索有关声明自定义audioSessionId然后用它audioSessionId初始化 AudioFx 类并为我的 MediaPlayer 或 AudioTrack 分配硬编码audi
  • Android 信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR) libwebviewchromium.so

    对于 android 4 4 我多次收到 Native crash at system lib libwebviewchromium so 错误 以下是设备包括 Xperia Z1 SO 01F 16 30 2 Galaxy Tab4 7
  • 移动到SD卡

    我知道从 android 2 2 开始可以使用移动到 SD 卡功能 我想知道有没有办法在我的程序中检测设备是否支持移动到 SD 卡功能 如果支持 则可以移动 否则如果不支持 则什么也不会发生 将在手机内存中 我的主要问题是我的应用程序支持
  • 标签栏随键盘一起上升

    这个问题之前已经发过 但是没有答案 Problem TabBar gt 2 个选项卡 选项卡一有一个Scrollview and an EddiText 标签二 其他 贴带时EditText 软键盘上升 TabBar与它一起 一个丑陋的解决
  • Android 中的 BLE Gatt onConnectionStateChanged 失败,状态为 257

    我正在开发一个同时连接到多个BLE设备的Android应用程序 之后我从这些设备永久读取特征 但过了一会儿 我在onConnectionStateChanged 函数中得到状态257 android文档没有解释错误的原因是什么 或者如何修复
  • 如何将 Android 应用程序添加到已在 iOS 应用程序中使用的现有 Firebase 项目?

    我一直在我的 iOS 应用程序中使用 Firebase 项目 我现在想开始为 Android 应用程序使用相同的 Firebase 项目及其所有数据库和存储 在您的应用程序下Overview菜单 你应该按添加另一个应用程序并选择Androi
  • 手动添加带有依赖pom/iml文件的aar

    由于我无法使用私人 Maven 来共享我的库 因此我正在考虑共享 aar 并导入到另一个项目中 当 aar 和 jar 文件不包含任何依赖项时 就会出现问题 因此 一旦我在android studio中手动导入aar 使用Import JA
  • 如何检查设备上是否安装了电子邮件客户端

    我需要检查设备上是否安装了电子邮件客户端 我使用了以下代码 但它对我不起作用 public boolean isIntentAvailable final PackageManager packageManager getApplicati
  • 无法 ACTION_VIEW 外部存储上的文件

    我的 Android 手机的外部存储中有一个文件 在本例中是模拟的 知道通往它的路径和 或拥有File代表它的对象 我如何使用Intent在适当的应用程序中打开它 我尝试的第一件事是 startActivity new Intent Int

随机推荐

  • 将拖放事件转发到父视图

    我有一个应用程序 其中有一个派生自 NSView 的自定义视图 在这个视图中 有几个自定义子视图 它们也是从 NSView 派生的 我想实现拖放行为 允许将 URL 拖放到视图上 主视图的一切都已正常工作 所以 实际上我必须在子视图和父视图
  • Java Eclipse 在保存时关闭自动构建工作区

    突然 我的 Eclipse 开始在我保存时自动构建工作区 并且仅一次保存就需要很长时间 我倾向于经常保存 以前从未这样做过 所以我想知道 如何将其关闭 If you want to turn off auto Building your p
  • Gitlab CI 变量返回空字符串?

    自从我的一个项目在 Gitlab CI 上构建开始失败以来已经过去 2 天了 主要错误是E MISSING APP KEY当我通过回显检查另一个变量时 HOST and PORT从我的 gitlab ci yml配置 像这样 tests s
  • 在显示模块化模式对象上创建继承

    我正在尝试在对象之间创建某种继承 var foo function function doFooStuff console log arguments callee name return doFooStuff doFooStuff var
  • MapView 谷歌地图 NullPointerException?

    我正在尝试创建一个如何获得使用地图视图 我创建了一个 Fragment 和一个 XML 来使用它 问题是当我尝试打开 MapView 时抛出空指针异常但我不明白为什么 我该如何解决呢 XML
  • 未收到额外意向

    我正在显示来自附加到我的项目的库的通知 当单击该通知时 该通知会转到一个活动 ReceivingActivity 单击通知后活动将打开 但不会收到附加的附加内容 通知触发代码 我调用sendNotification当我收到 gcm 消息并且
  • 如何将 javax.activation.DataSource 添加到 App Engine 开发服务器?

    tl dr 我如何添加javax activation DataSource依赖于通过 App Engine Maven 插件运行的服务器 我正在使用App Engine Maven 插件 https cloud google com ap
  • Google OAuth 2.0 离线访问

    即使用户不在场 我的应用程序也需要访问用户的数据 所以我的授权码请求包括access type offline这意味着如果这是用户第一次验证我的应用程序 我将取回刷新令牌 我保存刷新令牌并稍后使用它 一切都按预期进行并且运行得很好 但令我困
  • java.lang.IllegalStateException:已为此响应调用 getOutputStream() [重复]

    这个问题在这里已经有答案了 当用户单击某个链接时 使用 Web 服务将文档从远程 ECM 系统传输到用户计算机 所以我创建了 servlet 并从查询字符串中获取参数并从 URL 中获取参数 根据参数属性 调用多个与 Web 服务相关的方法
  • 在 Ruby on Rails 中使用随机字符串作为 id?

    我想创建一个类似于的网络应用程序http www pastebin com http www pastebin com 在 Ruby on Rails 中 astebin com 使用随机字符串来标识项目 Ruby on Rails 使用自
  • 我如何将泛型类作为参数传递给 Intent 构造函数

    我的 Android 应用程序中有这个通用活动 public class NavegadorActivity
  • Xampp - Ubuntu - 无法访问 lampp/htdocs 中的我的项目

    我已经将 xampp 安装到 Ubuntu 12 04 我已将我的项目放在文件夹 opt lampp htdocs project is here 中 当我在浏览器中输入内容时localhost soap php soap php 位于我的
  • R:Regex_Join/Fuzzy_Join - 以不同的词序连接不精确的字符串

    df1 df2 df3 library dplyr library fuzzyjoin df1 lt tibble a c Apple Pear Orange Sock Shoe Hat Cat Mouse Dog df2 lt tibbl
  • 获取最近周五日期的SQL

    我正在尝试获取 SQL Server 2008 中最近的星期五 我有这个 它获取一周的开始 星期一 然后减去 3 天以获得星期五 declare recentFriday datetime DATEADD ww DATEDIFF dd 0
  • 为什么我无法将间隔解析为 JPA 中的参数?

    我正在尝试选择时间戳间隔 Query value SELECT timestamp as time start timestamp interval 1 as time end FROM timestamp table nativeQuer
  • 如何在 Vue.js 2 中搜索多个字段

    我正在尝试搜索或过滤 3 个字段名字 姓氏 and email在我的 Vue js 2 应用程序中 据我了解 与 Vue 1 不同 Vue 2 没有内置的过滤器方法 因此我创建了一种自定义方法 该方法只能过滤一个字段 如何将其扩展到多个领域
  • CSS 转换后无法点击按钮

    我正在尝试制作一个带有立方体的 html 页面 所述立方体的每个面都有按钮 在默认面上 所有按钮都可以正常工作 但是 一旦我旋转立方体 新面就会失去所有交互性 HTML
  • 如何找到列表的众数?

    scala 集合中是否有一个函数可以查找列表中某个值的最大出现次数 假设我有一个清单 L List A B B E B E B B C E B output B 我可以编写一个模块来计算这个 但我希望已经有一个 scala 方式 或 sca
  • pytest中首先执行哪个文件?

    正在浏览一些有关的教程pytest 我了解到 python m pytest 该命令执行所有以前缀开头的文件test 以及哪些文件位于同一目录中的函数 但我的问题是 如果文件是 首先执行哪个文件test app id py test sum
  • 为什么 https 下载会暂停并显示 PAUSED_WAITING_TO_RETRY?

    我正在使用下载管理器 https developer android com reference android app DownloadManager html STATUS PAUSEDAndroid 中通过 https URL 下载文