com.android.volley.NoConnectionError:javax.net.ssl.SSLHandshakeException:握手失败

Posted

技术标签:

【中文标题】com.android.volley.NoConnectionError:javax.net.ssl.SSLHandshakeException:握手失败【英文标题】:com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: Handshake failed 【发布时间】:2017-06-19 12:38:33 【问题描述】:

使用volley进行基本网络操作,将项目添加为模块时没有连接握手错误。

虽然该模块在另一个项目中运行良好。

在研发上,添加了重试策略,但仍然出现同样的错误。

这是我的代码。 https://gist.github.com/fizzysoftware/a895bc2cbd1ad9a048277859f3f23963

【问题讨论】:

【参考方案1】:

可能是以下两种情况之一:

    您尝试连接到一个 HTTP url,但它实际上是一个 HTTPS url,或者 您尝试连接到 HTTPS 页面,但证书无效。

这些至少是我迄今为止遇到的情况......

【讨论】:

不,实际上该 url 只是 https,它在 marshmallow 版本中运行良好,但在 kitkat 中没有。 您能否发布一些代码,以便我们了解您如何尝试调用它。请和 logcat :) 请看我编辑的问题。我收到消息 com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: Handshake failed 的 Volley 服务器错误 https 改为 http 时得到响应 谢谢。我在 http url 中使用了 https。现在问题解决了【参考方案2】:

在我的项目中也面临同样的问题。在 Marshmallow 中,它的工作就足够了。但在 Kitkat 版本中,它提出了问题

“com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: 握手失败”

为了处理这个问题,我使用了 google 的 auth 依赖项。请在 Gradle 中添加以下依赖项

compile 'com.google.android.gms:play-services-auth:11.0.2'

如果需要安装,请实现在较低版本中安装安全提供程序的方法

private void updateAndroidSecurityProvider(Activity callingActivity) 
try 
    ProviderInstaller.installIfNeeded(this);
 catch (GooglePlayServicesRepairableException e) 
    // Thrown when Google Play Services is not installed, up-to-date, or enabled
    // Show dialog to allow users to install, update, or otherwise enable Google Play services.
    GooglePlayServicesUtil.getErrorDialog(e.getConnectionStatusCode(), callingActivity, 0);
 catch (GooglePlayServicesNotAvailableException e) 
    Log.e("SecurityException", "Google Play Services not available.");

然后在您的活动中调用该方法,然后再进行网络操作。

【讨论】:

【参考方案3】:

将 url 从 Https 更改为 Http 即可。

【讨论】:

删除 http://www.部分来自 URL。

以上是关于com.android.volley.NoConnectionError:javax.net.ssl.SSLHandshakeException:握手失败的主要内容,如果未能解决你的问题,请参考以下文章