【Android】CLEARTEXT communication to 10.0.2.2 not permitted by network security policy(Retrofit)

问题描述

使用Retrofit2发起请求时报错:

java.net.UnknownServiceException: CLEARTEXT communication to 10.0.2.2 not permitted by network security policy

如下图所示:


原因分析

这个错误是由于 Android 9 (API level 28) 引入了新的网络安全策略导致的。默认情况下,Android 9 禁止使用明文(Cleartext)流量进行网络通信,只允许使用加密的 HTTPS 连接。


解决方案

要解决这个问题,你可以通过以下两种方式之一:

  1. 使用 HTTPS 连接:最佳实践是将你的服务器配置为使用 HTTPS 连接,这样可以确保通信的安全性。一旦你的服务器上配置了有效的 SSL 证书,你只需将 Retrofit 的 Base URL 修改为 https:// 开头的地址即可。

  2. 临时允许明文通信(仅限调试期间):如果你的服务器无法使用 HTTPS 连接,或者你只是在开发和调试阶段需要使用明文通信,你可以在 AndroidManifest.xml 文件中添加以下代码来临时允许明文通信:

<application
    ...
    android:usesCleartextTraffic="true"
    ...
>
    ...
application>

注意:在正式发布应用之前,必须将 android:usesCleartextTraffic 设置为 false,以确保安全性。

你可能感兴趣的:(Android,android,Retrofit)