java.io.IOException: Cleartext HTTP traffic to 100.107.1.1 not permitted

2024-01-04 17:46:03  阅读 230 次 评论 0 条

报错,明文链接不支持

java.io.IOException: Cleartext HTTP traffic to 100.107.1.1 not permitted
at com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:127)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:462)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:411)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:542)
at com.alibaba.sdk.android.oss.common.utils.HttpdnsMini$QueryHostTask.call(HttpdnsMini.java:138)
at com.alibaba.sdk.android.oss.common.utils.HttpdnsMini$QueryHostTask.call(HttpdnsMini.java:120)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
CleartextURLFilter.checkURLPermitted() 是一个用于检查是否允许通过明文(非加密)方式访问URL的方法,它在Android中的网络安全策略中起作用。在较新的Android版本中,默认情况下禁止明文流量的使用。

解决方法:

1、链接使用https
2、强制使用明文
尽量使用https,确实不方便就强制允许,方法如下

方法1

在Application onCreate 方法里
setCleartextTrafficPermitted方法是隐藏的,因为我正在用Xposed,所以直接用xposed调了,无xposed用反射方法调用隐藏方法,我懒得写了
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    NetworkSecurityPolicy policy = NetworkSecurityPolicy.getInstance();
    if (policy != null && !policy.isCleartextTrafficPermitted()) {
        // 允许明文流量
        XposedHelpers.callMethod(policy, "setCleartextTrafficPermitted", true);
        L.i(TAG, "allow CleartextTraffic:" + policy.isCleartextTrafficPermitted());
    }
}

方法2

在app/src/main/res/xml 下面创建文件network.xml (名字随意,后面对应上就行),写入
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

然后在AndroidManifest.xml文件的Application标签中加入一行

android:networkSecurityConfig="@xml/network"


本文地址:http://www.bloguan.com/?id=611
版权声明:本文为原创文章,版权归 博观网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?