[编辑:如果您在这里参加 Let's Encrypt 从 2021 年 1 月开始的到期活动,请先阅读 https://letsencrypt.org/2020/12/21/extending-android-compatibility.html]
在 Android M 或更早版本上通过 OkHttp连接到https://valid-isrgrootx1.letsencrypt.org/失败,而连接在 N 或更高版本上工作。
OkHttpClient client = new OkHttpClient();
try {
Request request = new Request.Builder()
.url("https://valid-isrgrootx1.letsencrypt.org/robots.txt")
.build();
try (Response response = client.newCall(request).execute()) {
assertTrue(response.code() == 200 || response.code() == 404);
assertEquals(Protocol.HTTP_2, response.protocol());
}
} catch (SSLHandshakeException sslhe) {
sslhe.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:322)
at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:320)
at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:284)
at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:169)
at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:258)
at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) …
Run Code Online (Sandbox Code Playgroud) 我正在尝试制作 Android 应用程序,我可以在其中获取和解析 HTML(来自没有 API 的站点)。我正在使用 OkHttp。该站点具有不受信任(但有效)的证书。我正进入(状态:
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
Run Code Online (Sandbox Code Playgroud)
我已经设置了官方方式(https://developer.android.com/training/articles/security-ssl#java),现在我需要将它与 OkHttpClient 链接。
我试过
OkHttpClient client = new OkHttpClient;
OkHttpClient.Builder builder = client.newBuilder();
builder.sslSocketFactory(sslcontext.getSocketFactory()).build();
Run Code Online (Sandbox Code Playgroud)
但它不起作用,而且它已被弃用。谢谢
我正在尝试添加 Google DNS 查找,即“8.8.8.8”。在我的 Android 应用程序中,我将 Retrofit 与 OkHttp 一起使用。
可以通过编程实现吗?
我看到了这篇文章,但无法添加它dns-android-okhttp。
使用 LocalContext.current 会导致应用程序崩溃,告诉我:
java.lang.IllegalStateException: No default context
at androidx.glance.CompositionLocalsKt$LocalContext$1.invoke(CompositionLocals.kt:35)
at androidx.glance.CompositionLocalsKt$LocalContext$1.invoke(CompositionLocals.kt:35)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at androidx.compose.runtime.LazyValueHolder.getCurrent(ValueHolders.kt:29)
at androidx.compose.runtime.LazyValueHolder.getValue(ValueHolders.kt:31)
at androidx.compose.runtime.ComposerImpl.resolveCompositionLocal(Composer.kt:1776)
at androidx.compose.runtime.ComposerImpl.consume(Composer.kt:1746)
at com.bqubique.quran_randomayah.view.VerseCardKt.ButtonTile(VerseCard.kt:282)
at com.bqubique.quran_randomayah.view.ComposableSingletons$VerseCardKt$lambda-2$1.invoke(VerseCard.kt:79)
at com.bqubique.quran_randomayah.view.ComposableSingletons$VerseCardKt$lambda-2$1.invoke(VerseCard.kt:79)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:116)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
at
...
Run Code Online (Sandbox Code Playgroud)
使用的版本:
compose_version = '1.0.5'
wear_compose_version = '1.0.0-alpha15'
我尝试过在任何类型的 @Composable 中调用 LocalContext.current,甚至在 setContent{...} 内的 MainActivity.kt 中调用 LocalContext.current