首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTPS支持Volley Android网络库

HTTPS支持Volley Android网络库
EN

Stack Overflow用户
提问于 2014-03-21 16:32:14
回答 1查看 8.4K关注 0票数 2

我有一个对HTTPS后端进行REST调用的项目,它在一些设备上运行良好,而在另一些设备上中断。

这是我得到的错误:

com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL握手中止: ssl=0x78004ee8: ssl=0x78004ee8库中的失败,通常是协议错误:140770FCSL routinesSL23_GET_SERVER_HELLO:unknown协议(外部/openssl/ SSL /s23_clnt.c:766 0x731f5d5c:0x00000000)

看了看Volley文档,他们提到

“您可以包含您自己的HTTPStack (以处理SSL连接.”

有人这么做是为了截击吗?如果是这样,请您分享您的更改吗?

注:证书由一个有效实体签名,该实体已在设备的受信任证书中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-31 17:50:36

这是我的解决方案:

在类中Volley的方法

代码语言:javascript
复制
public static RequestQueue newRequestQueue(Context context, HttpStack stack)

查找以下文本:

代码语言:javascript
复制
stack = new HurlStack();

然后将这一行更改为:

代码语言:javascript
复制
stack = new HurlStack(null, createSslSocketFactory());

其中方法createSslSocketFactory()的定义如下:

代码语言:javascript
复制
private static SSLSocketFactory createSslSocketFactory() {
    TrustManager[] byPassTrustManagers = new TrustManager[]{new X509TrustManager() {
        public X509Certificate[] getAcceptedIssuers() {
            return new X509Certificate[0];
        }

        public void checkClientTrusted(X509Certificate[] chain, String authType) {
        }

        public void checkServerTrusted(X509Certificate[] chain, String authType) {
        }
    }};

    SSLContext sslContext = null;
    SSLSocketFactory sslSocketFactory = null;
    try {
        sslContext = SSLContext.getInstance("TLS");
        sslContext.init(null, byPassTrustManagers, new SecureRandom());
        sslSocketFactory = sslContext.getSocketFactory();

    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
        Log.e(TAG, StringUtils.EMPTY, e);
    } catch (KeyManagementException e) {
        Log.e(TAG, StringUtils.EMPTY, e);
    }

    return sslSocketFactory;
}

我知道这是不安全的,但我使用它只是为了测试目的。您可以通过只接受来自服务器的证书来提高安全性。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22564317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档