Android 设备上 OkHttp 的意外行为

问题描述 投票:0回答:0

出于研究目的,我在我的 android 应用程序和我的本机 java 环境中使用 OkHttp3 作为依赖项。这是两个相同的应用程序,它们执行相同的操作。

思路很简单:我创建一个OkHttpClient类的实例,在SocketFactoryClass中设置随机数生成器。这是一个例子:

OkHttpClient client = new OkHttpClient.Builder()
    .sslSocketFactory(new CustomSSLSocketFactory(null), x509TrustManagers)
    .build();

CustomSSLSocketFactory 类创建一个 SSLContext 并在此 init()-Method 中移交新的随机数生成器。它看起来像这样:

SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyManagers, trustManagers, rand);

rand
在这种情况下是我自己的随机数生成器。


接下来,我在我的 android 移动应用程序和我的本机 java 环境中测试了这段代码。出于测试目的,我将随机值设置为 0x41。

所以当我查看数据包(由我的 java 程序发送)时,我看到随机字段填充了 0x41 (A) 字节。但是当我在我的 android 手机上测试这个应用程序时,随机值不是 0x41 字节的块。我不明白安卓智能手机上的这种行为。

你们谁能告诉我为什么我不能在 android 应用程序中设置随机数生成器。

java android random okhttp tls1.2
© www.soinside.com 2019 - 2024. All rights reserved.