Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中使用HTTPS连接服务器_Java_Android_Https - Fatal编程技术网

Java 在Android中使用HTTPS连接服务器

Java 在Android中使用HTTPS连接服务器,java,android,https,Java,Android,Https,我正在做一个应用程序来连接HTTPS服务器。我读了很多教程,但我没有一个理想的解决方案 在服务器中,我有一个自签名证书。在客户部分我要做什么?我阅读了官方教程:但如果我加载相同的证书应用程序,则会崩溃,出现以下异常javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidator异常:找不到证书路径的信任锚。 一些想法或例子 谢谢您需要将其添加到您的请求中 比如说改装 OkHttpClient clie

我正在做一个应用程序来连接HTTPS服务器。我读了很多教程,但我没有一个理想的解决方案

在服务器中,我有一个自签名证书。在客户部分我要做什么?我阅读了官方教程:但如果我加载相同的证书应用程序,则会崩溃,出现以下异常
javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidator异常:找不到证书路径的信任锚。

一些想法或例子


谢谢

您需要将其添加到您的请求中

比如说改装

        OkHttpClient client = new OkHttpClient();

    try {
        KeyStore keyStore = readKeyStore(this);
        SSLContext sslContext = SSLContext.getInstance("SSL");
        TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        trustManagerFactory.init(keyStore);
        KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
        keyManagerFactory.init(keyStore, "keystore_pass".toCharArray());
        sslContext.init(keyManagerFactory.getKeyManagers(),trustManagerFactory.getTrustManagers(), new SecureRandom());
        client.setSslSocketFactory(sslContext.getSocketFactory());

    } catch (Exception e) {
        e.printStackTrace();
    }
然后


要重新启动adapter.Builder()

它的可能副本,可能是您的代码出了问题,请向它表明如果不使用客户端验证,您不必使用
KeyManager
初始化
SSLContext
。只需传递空值。您应该使用TLS而不是SSL
            .setClient(new OkClient(client))