Android WebView加载失败,面对net::ERR_CLEARTEXT_NOT_PERMITTED该怎么办?
2023-10-15 23:25:56
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 错误可能会让你头疼不已,但只要你了解其原因并采取正确的措施,就可以轻松解决。
现在,你已经掌握了应对之法,快去让你的应用程序告别这个讨厌的错误吧!
常见问题解答
- 为什么我收到 net::ERR_CLEARTEXT_NOT_PERMITTED 错误?
答:因为你的应用程序正在尝试加载不安全的 HTTP 链接。
- 如何修复 net::ERR_CLEARTEXT_NOT_PERMITTED 错误?
答:将 HTTP 链接更改为 HTTPS,并检查第三方库是否支持 HTTPS。
- 如何使用 WebViewClient 处理 SSL 证书错误?
答:使用 WebViewClient 的 onReceivedSslError 方法来继续加载页面。
- 如何使用 OkHttpClient 配置 Retrofit 的安全设置?
答:使用 OkHttpClient.Builder 创建一个 OkHttpClient 对象,并设置是否允许明文传输。
- 使用专用的安全库有什么好处?
答:专用的安全库可以简化安全配置,并处理各种安全相关的问题。