Android中Cronet Engine能否配置允许HTTP请求?遇明文不允许错误
Android Cronet Engine 允许HTTP请求的配置方案
你遇到的net::ERR_CLEARTEXT_NOT_PERMITTED错误,是因为Android系统默认禁止明文HTTP请求,Cronet Engine会遵循系统的网络安全规则,但确实可以通过配置开启HTTP请求支持,以下是具体方法:
方法一:通过网络安全配置文件(推荐,更灵活)
- 在项目的
res/xml目录下创建network_security_config.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <!-- 允许指定域名的HTTP请求(更安全) --> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">你的目标域名.com</domain> </domain-config> <!-- 如果需要允许所有域名的HTTP请求,替换上面的domain-config为: <base-config cleartextTrafficPermitted="true" /> --> </network-security-config>
- 在
AndroidManifest.xml的<application>标签中添加引用:
android:networkSecurityConfig="@xml/network_security_config"
方法二:全局开启明文请求(适用于Android 9及以下)
- 直接在
AndroidManifest.xml的<application>标签中添加属性:
android:usesCleartextTraffic="true"
注意:这种方式会全局允许所有HTTP请求,安全性较低,仅建议在测试或非敏感场景使用。
Cronet Engine 额外配置(可选)
- 在构建CronetEngine时补充配置,确保明文请求被允许:
CronetEngine cronetEngine = new CronetEngine.Builder(context) // 启用必要的HTTP支持 .enableHttpCache(CronetEngine.Builder.HTTP_CACHE_DISK, 10 * 1024 * 1024) .enableHttp2(true) // 强制开启明文请求支持(依赖系统配置生效) .setExperimentalOptions("{\"NetworkSecurityConfig\": {\"cleartextTrafficPermitted\": true}}") .build();
完成以上配置后,Cronet Engine就能正常发起HTTP请求了。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

