当前位置: 首页 > 知识库问答 >
问题:

对Volley Android网络库的HTTPS支持

云星波
2023-03-14

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

这是我得到的错误:

通用域名格式。Android截击NoConnectionError:javax。网ssl。SSLHandshakeException:javax。网ssl。SSLProtocolException:SSL握手中止:SSL=0x78004ee8:SSL库中出现故障,通常是协议错误:140770FCSL routinesSL23\u GET\u SERVER\u HELLO:未知协议(外部/openssl/SSL/s23\u clnt.c:766 0x731f5d5c:0x00000000)

查看凌乱的文档,他们提到

"您可以包含自己的HTTPStack(处理SSL连接[...])"

有人为截击做过这个吗?如果是的话,请分享你的变化?

注意:证书由设备的受信任证书中已有的有效实体签名。

共有1个答案

华旭
2023-03-14

这是我的解决方案

在类Volley中的方法

public static RequestQueue newRequestQueue(Context context, HttpStack stack)

找到以下文本:

stack = new HurlStack();

然后将此行更改为:

stack = new HurlStack(null, createSslSocketFactory());

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

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;
}

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

 类似资料:
  • Networking support 网络支持 Networking options CONFIG_NET 网络选项.systemd依赖于它 Packet socket CONFIG_PACKET 链路层PF_PACKET套接字支持.可以让应用程序(比如:抓包工具tcpdump,DHCP客户端dhclient,WiFi设置工具wpa_supplicant)直接与网络设备通讯,而无需使用内核中的其它

  • Pion Network Library (pion-net) 是一个用来实现轻量级 HTTP 接口的 C++ 开发包。Pion Network Library 使用 Boost 和 asio 库来实现多线程和异步I/O。

  • 一面(电话面) 1基本情况 2家庭情况 有无女朋友 3想不起来了 二面(视频面) 1自我介绍 2问了几个网络相关知识(osi 动态路由) 3深挖简历社团经历 4问研究生建模大赛团队问题(自己扮演的角色,团队有没有矛盾如何处理的) 三面(视频面 1自我介绍 2 朋友眼中自己是什么样的人? 3如何学习的,学习方法 四面(电话面) 谈薪资 #中兴# 华为 #锐捷网络# 新华三#

  • 本文我们将看看如何分析iOS设备上的网络流量。分析应用的网络流量会带来几个方面的好处。它可以帮助我们推断应用是如何管理用户会话的,我们应用调用的另一方是谁,以及应用程序内部是如何工作的等等。我们也会看看如何分析使用SSL的网络流量。 监听网络流量有主动和被动两种方式。如果你对远程分析一个网络中的特定设备的流量感兴趣,那你需要wireshark这个工具。打开Wireshark,开始嗅探网络,添加一个

  • 关于在项目中使用截击,我有几个问题: 这个库可以在任何Java项目中使用,还是仅在Android中使用

  • 使用Chromium原生网络库发起HTTP/HTTPS请求 进程: 主进程​ net 模块是用于发出 HTTP(S) 请求问题的客户端 API。 它类似于Node.js的HTTP 和 HTTPS模块,但是它基于Chromium 的原生API 而非Node.js ,相对而言更适合处理 web 端的请求。 关于为什么使用 net 模块 而非Node.js,这里有个简要的原因列表: 自动管理系统代理设置