Android 11配置usesCleartextTraffic无效无法发起HTTP请求,Android9运行正常
Android 11 HTTP明文请求配置失效解决方案
- 第一步:排查清单配置冲突
检查AndroidManifest.xml的application节点,若同时配置了android:usesCleartextTraffic="true"和android:networkSecurityConfig属性,API 23及以上系统会优先应用网络安全配置,需优先核对网络安全配置规则正确性。 - 第二步:修正网络安全配置写法
<domain>标签内仅可填写纯IP或域名,不可携带HTTP前缀、端口号、路径后缀。例如请求地址为http://192.168.0.10:8000/login,domain标签仅需填写192.168.0.10即可。
若需临时验证规则是否生效,可替换为全局允许明文的临时配置,验证通过后再收紧权限:<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true" /> </network-security-config> - 第三步:排查网络框架拦截逻辑
OkHttp 3.13及以上版本默认禁止明文HTTP请求,不受系统层权限配置影响,需手动添加明文连接允许规则:
若使用Retrofit、Volley等二次封装框架,对应修改传入的底层网络客户端配置即可。// Kotlin 示例 val client = OkHttpClient.Builder() .connectionSpecs(listOf( ConnectionSpec.MODERN_TLS, ConnectionSpec.CLEARTEXT // 允许明文请求 )) .build() - 第四步:排查系统层面限制
确认测试设备的私有DNS(DNS over TLS)功能已关闭,Android 11开启私有DNS后会拦截未加密的HTTP域名/IP解析请求,导致请求失败。
内容的提问来源于stack exchange,提问作者Agung Wijayanto
相关产品推荐
相关产品推荐

