Android 7后默认禁止了非HTTPS请求,如果在请求中使用HTTP会报如下错误:
E/c: Cleartext traffic not permitted: http://223.167.104.12:8080
java.io.IOException: Cleartext traffic not permitted: http://223.167.104.12:8080
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:439)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:492)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:470)
at qrom.component.wup.transport.a.c.b(SourceFile:260)
at qrom.component.wup.transport.a.e.run(SourceFile:315)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
我们可以在Manifest的Application节点配置networkSecurityConfig
属性来自定网络安全策略,如下:
<application
android:name=".App"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/app_theme"
android:networkSecurityConfig="@xml/network_security_config">
......
</application>
在\res\xml
目录下新建network_security_config.xml
文件:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<!-- 默认配置,是否开启Http流量允许-->
<base-config cleartextTrafficPermitted="true"></base-config>
<!-- 特例配置,配置某个域名是否开启Http流量允许-->
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">android.bugly.qq.com</domain>
<domain includeSubdomains="true">155.25.62.33</domain>
</domain-config>
</network-security-config>
更多具体描述可以参考官方文档
网友评论