返回

Android WebView加载失败,面对net::ERR_CLEARTEXT_NOT_PERMITTED该怎么办?

前端

WebView 加载失败:net::ERR_CLEARTEXT_NOT_PERMITTED 的究极解决方案

身为开发者,当你兴致勃勃地启动你的 Android 应用程序,却被讨厌的 net::ERR_CLEARTEXT_NOT_PERMITTED 错误打断,是不是感到一脸懵逼?别担心,你不是孤单的!许多开发者都曾遭遇过这个令人头疼的问题。

别着急抓狂,让我们一起深入了解这个错误,并探索一劳永逸的解决之道。

net::ERR_CLEARTEXT_NOT_PERMITTED 是什么?

net::ERR_CLEARTEXT_NOT_PERMITTED 错误会提示“明文传输不允许”。它通常出现在 Android 应用程序中,当 WebView 尝试加载不安全的(未加密的)HTTP 链接时。

从 Android 9 开始,Google 默认禁止应用程序通过 HTTP 加载资源,以提高安全性。因此,如果你仍在使用 HTTP 链接,你就会遇到这个错误。

如何解决?

为了解决 net::ERR_CLEARTEXT_NOT_PERMITTED 错误,你需要采取一些措施:

  • 确认你的应用程序是否使用 HTTP 链接。 如果是,赶紧将其更改为 HTTPS!HTTPS 是一种加密协议,可以保护数据在传输过程中不被窃取或篡改。

  • 检查第三方库是否支持 HTTPS。 如果你的应用程序使用第三方库,请确保这些库也支持 HTTPS。如果不支持,那就更换一个支持 HTTPS 的库吧!

WebViewClient 设置

在 Android 中,WebViewClient 是一个类,用于处理 WebView 加载网页时发生的各种事件。你可以通过 WebViewClient 来配置 WebView 的安全设置。

例如,你可以使用 WebViewClient 的 onReceivedSslError 方法来处理 SSL 证书错误。如果你知道证书是合法的,你可以使用 proceed 方法来继续加载页面。

OkHttpClient 和 Retrofit

如果你使用流行的网络库 Retrofit,可以在 OkHttpClient 中配置安全设置。OkHttpClient 是 Retrofit 用于处理 HTTP 请求的类。

你可以使用 OkHttpClient.Builder 来创建一个 OkHttpClient 对象,并设置是否允许明文传输。

OkHttpClient okHttpClient = new OkHttpClient.Builder()
    .followSslRedirects(true)
    .followRedirects(true)
    .build();

使用专用的安全库

为了简化安全配置,你还可以使用专用的安全库,如 OkHttp-OkHttp3-Interceptors 或 Android-Universal-Image-Loader。

这些库可以帮助你轻松地配置安全设置,并处理各种安全相关的问题。

总结

net::ERR_CLEARTEXT_NOT_PERMITTED 错误可能会让你头疼不已,但只要你了解其原因并采取正确的措施,就可以轻松解决。

现在,你已经掌握了应对之法,快去让你的应用程序告别这个讨厌的错误吧!

常见问题解答

  1. 为什么我收到 net::ERR_CLEARTEXT_NOT_PERMITTED 错误?

答:因为你的应用程序正在尝试加载不安全的 HTTP 链接。

  1. 如何修复 net::ERR_CLEARTEXT_NOT_PERMITTED 错误?

答:将 HTTP 链接更改为 HTTPS,并检查第三方库是否支持 HTTPS。

  1. 如何使用 WebViewClient 处理 SSL 证书错误?

答:使用 WebViewClient 的 onReceivedSslError 方法来继续加载页面。

  1. 如何使用 OkHttpClient 配置 Retrofit 的安全设置?

答:使用 OkHttpClient.Builder 创建一个 OkHttpClient 对象,并设置是否允许明文传输。

  1. 使用专用的安全库有什么好处?

答:专用的安全库可以简化安全配置,并处理各种安全相关的问题。