Android retrofit 接口请求,提示CLEARTEXT communication处理
一、背景
使用Retrofit 网络框架进行后端本地接口请求,提示CLEARTEXT communication to 192.168.134.10 not permitted by network security policy
原理:在Android应用中使用Retrofit框架进行网络请求时,出于安全考虑,Android 10(API级别29)及以上版本对明文通信(如HTTP而非HTTPS)进行了限制。这意味着,如果你尝试连接到本地网络或测试服务器(如IP地址192.168.134.10)而没有使用HTTPS,你的应用可能会遇到问题。
二、解决方案
方案一:使用HTTPS
如果你的服务器支持HTTPS,这是最简单且最安全的解决方案。你可以购买SSL证书并将其配置在服务器上,然后使用HTTPS协议进行通信。
方案二:添加网络安全性配置
可以在你的AndroidManifest.xml
中添加网络安全性配置,以允许明文流量。在你的<application>
标签内添加:
<application
...
android:networkSecurityConfig="@xml/network_security_config">
...
</application>
然后,在res/xml目录下创建一个名为network_security_config.xml的文件,并添加以下内容:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">192.168.134.10</domain> //这里的ip换为自己的ip
</domain-config>
</network-security-config>