Flutter dio不能访问http url

一:问题描述

前段时间在面试,有家公司问是否愿意做一个小的入职测试,想着多个机会多条路,就顺便做了,但项目刚开始运行,就报错了,报错信息如下图所示
【Flutter dio error】DioError [DioErrorType.DEFAULT]:Bad state: Insecure HTTP is not allowed by plat
请添加图片描述
其中主要关键字是 Bad state: Insecure HTTP is not allowed by platform ,翻译后是说错误的状态,因为平台不允许不安全的 HTTP 请求。
这是在获取用户信息接口中发生的错误,用到了 HTTP 请求,然后查阅了相关资料并尝试后,最终修复了这个问题,需要说明的是,我只在 Android 端进行了配置。

二:解决方案

出现这种情况,是因为 Android 9 对网络请求做了限制,不能直接访问 HTTP 域名的地址,可以通过修改项目的配置文件,允许不加密的请求也可以使用,总共就两步,接下来说下如何配置。

步骤一:

依次按照路径 android/app/src/main/AndroidManifest.xml 找到安卓的清单文件,在 application 标签中添加两个属性

<application
    android:usesCleartextTraffic="true"
    android:networkSecurityConfig="@xml/network_security_config"
  >

步骤二:

android/app/src/main/res 目录下新建名为 xml 的文件夹,然后在 xml 文件夹下新建 network_security_config.xml 文件,如下图所示
请添加图片描述

network_security_config.xml 的文件内容为

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

ok

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值