我正在构建一个连接到服务器并检索数据的android应用。首先,我必须选择是使用AsynchTask(与HttoClient一起使用)还是AsynchHttpClient,然后选择AsynchHttpClient。现在,实际上一切正常,但是今天,当我调试其他东西时,我注意到调试器在发送/检索数据时发出警告(我正在通过https进行所有操作)。调试器说类似Beware! using the fix is insecure, as it doesn't verify SSL certificates之类的内容。我正在做一些挖掘工作,并在AsynchHttpClient类中找到了此消息,它来自的实际部分在这里:

private static SchemeRegistry getDefaultSchemeRegistry(boolean fixNoHttpResponseException, int httpPort, int httpsPort) {
    if (fixNoHttpResponseException) {
        Log.d(LOG_TAG, "Beware! Using the fix is insecure, as it doesn't verify SSL certificates.");
    }

    if (httpPort < 1) {
        httpPort = 80;
        Log.d(LOG_TAG, "Invalid HTTP port number specified, defaulting to 80");
    }

    if (httpsPort < 1) {
        httpsPort = 443;
        Log.d(LOG_TAG, "Invalid HTTPS port number specified, defaulting to 443");
    }


我不太确定这意味着什么。是的,我差点忘了,我读到这可能是因为我使用的是自签名证书(用于测试),但是在发布不安全的内容之前,我想问一下我是否在问其他人是否确切知道此消息的含义

谢谢

最佳答案

您的证书可能有问题吗?
我使用这种方法在Android项目中添加证书。

    public static SSLContext getFactory() throws Exception {
    KeyStore trusted = KeyStore.getInstance("BKS");

    InputStream in = context.getResources().openRawResource(R.raw.myfile);

    try {
        // Initialisation de notre keystore. On entre le mot de passe (storepass)
        trusted.load(in, "mypassword".toCharArray());
    } finally {
        in.close();
    }


    TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
    tmf.init(trusted);

    SSLContext ssl_context = SSLContext.getInstance("SSL");
    ssl_context.init(null, tmf.getTrustManagers(), null);

    return ssl_context;
}

08-05 00:45