我正在使用自签名 CA 证书进行测试环境,但面临使用 HttpClient 访问 api 的问题...请帮助我解决此问题...
W/System.err:javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。/W/System.err: 在 com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:333) 在 com.android.okhttp.internal.http.SocketConnector.connectTls(SocketConnector.java:103) 在 com. android.okhttp.Connection.connect(Connection.java:167) 在 com.android.okhttp.Connection.connectAndSetOwner(Connection.java:209) 在 com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128) 在com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:352) 在 com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:341) 在 com.android.okhttp.internal。 http.HttpEngine.sendRequest(HttpEngine.java:259) 在 com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:454) 在 com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl. java:114) 在 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:245) 在 com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218) 在 com.android .okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java) 在 .Components.HttpClient.getInternetData(HttpClient.java:135) 在 .Components.HttpClient.doInBackground(HttpClient.java:53) 在 .Components.HttpClient.doInBackground (HttpClient.java:31) 03-11 20:18:19.305 8156-8238/W/System.err: 在 android.os.AsyncTask$2.call(AsyncTask.java:295) 在 java.util.concurrent.FutureTask。在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)在java.lang.Thread运行(FutureTask.java:237) .run(Thread.java:818) 原因:java.security.cert.CertificateException:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。在 com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:324) 在 com.android.org.conscrypt.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:225) 在 com.android.org.conscrypt.Platform.checkServerTrusted (Platform.java:115)在com.android.org.conscrypt.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:571)在com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(本机方法)03-11 20:18:19.306 8156-8238/ W/System.err:位于 com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:329) ... 20 更多
这是我的调用方法:
HttpClient client = new HttpClient(context, new ReturnProcess(), params_hash_map);
client.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, URL);
Run Code Online (Sandbox Code Playgroud)
基类:
import android.content.Context; …Run Code Online (Sandbox Code Playgroud)