侧边栏壁纸
博主头像
钱学超博主等级

火星人,1万小时法则的忠实拥趸。技术宅,象棋和羽毛球爱好者,马拉松PB成绩:4小时零8分。坚持认为算法是计算机的灵魂。喜欢解决问题,喜欢手工,喜欢与朋友们聊天喝酒吹牛X。

  • 累计撰写 83 篇文章
  • 累计创建 464 个标签
  • 累计收到 88 条评论
标签搜索

目 录CONTENT

文章目录

Cleartext HTTP traffic to 192.168.199.202 not permitted解决

钱学超
2022-03-02 / 0 评论 / 0 点赞 / 1,499 阅读 / 912 字 / 正在检测是否收录...
广告 广告
  1. 安卓开发,在某些设备上运行没有问题。放到部分设备上,就会出现问题。抛错如标题所示。
  2. 这是因为从Android 9.0(API级别28)开始,默认情况下限制了明文流量的网络请求,对未加密流量不再信任,直接放弃请求,因此http的url均无法在webview中加载,https 不受影响。
  3. 如果是使用webview的方式访问网路,可以使用解决方案(AndroidManifest.xml):
<manifest ...>
    <application
        ...
        android:usesCleartextTraffic="true"
        ...>

        xxxxxxxxxxxx
    </application>
</manifest>
  1. 如果是使用httpclient等方式请求网络,常见场景就是访问API,此时可以使用另一个开关来解决:
<manifest ...>
    <application
        ...
        android:networkSecurityConfig="@xml/network_security_config"
        ...>
        ...
    </application>
</manifest>

这里需要注意,【network_security_config】应该对应一个xml文件,位置放在res/xml/文件夹下。内容:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>
  1. 除此以外,还有一写处理方式,倒也不难。比如:targetSdkVersion 降级回到 27以下,或者将服务器所有接口改为https,网络请求全部使用https,这就好了。
  2. PS:推荐一款https服务器:caddy :https://caddyserver.com/
0

评论区