Android应用仅在首次启动时接受自签名证书

时间:2015-03-29 12:23:48

标签: android https self-signed

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

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

编辑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中可能有什么不同的想法导致这个问题?

1 个答案:

答案 0 :(得分:0)

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 来自docuemntation http://www.w3.org/TR/XMLHttpRequest/#the-status-attribute表示请求在去往任何地方之前被取消。