【问题标题】:Android app only accepts self signed certificates on first startAndroid 应用程序仅在首次启动时接受自签名证书
【发布时间】:2015-03-29 12:23:48
【问题描述】:

我有一个非常烦人的问题,当我第一次启动我的应用程序时,我的自签名证书被接受了。当我关闭应用程序并重新启动它时,证书不再被接受。我做错了什么?

这是一个调试版本,所以我不知道为什么它只会在第二次启动时失败。

编辑 1:

这是一个通过 https 请求资源的 Cordova 应用程序。我刚刚找到这篇文章http://mail-archives.apache.org/mod_mbox/cordova-dev/201401.mbox/%3C0AC46520-9B83-4934-8E4B-BCEAC44F2DFE@devgeeks.org%3E,但它并没有真正说明如何解决这个问题。

我得到的 HTTP 错误代码是状态 0,这意味着证书无效/不被接受。

编辑 2:

我最近发现这通常是 Android 4.4 的一个问题。有什么想法在 4.4 中可能会导致此问题吗?

【问题讨论】:

  • 您没有为我们提供足够的信息来处理。请发布显示问题的示例代码(请参阅stackoverflow.com/help/mcve)、所需行为和实际行为的描述以及任何错误日志。

标签: android https self-signed


【解决方案1】:
You can solve it by setting

System.setProperty("http.keepAlive", "false");

在我进行 HTTP 调用之前。 Android 在其连接池中保持关闭的连接并尝试重用它们似乎存在问题。 status 属性必须返回运行这些步骤的结果:

  1.>   If the state is UNSENT or OPENED, return 0.

  2.>  If the error flag is set, return 0.

  3.>  Return the HTTP status code.

我们可以更深入地研究规范并找出返回 0 的那些条件的含义。 来自http://www.w3.org/TR/XMLHttpRequest/#stateshttp://developer.android.com/guide/faq/troubleshooting.html 来自文档http://www.w3.org/TR/XMLHttpRequest/#the-status-attribute 表示请求在去任何地方之前被取消。

【讨论】:

  • 抱歉,我不能再测试了。与此同时,我们的设置发生了很大变化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-24
  • 1970-01-01
  • 2023-01-03
  • 1970-01-01
  • 2015-12-25
  • 1970-01-01
  • 2011-11-28
相关资源
最近更新 更多