React Native Android配置明文权限与网络安全规则后axios仍无法发起HTTP请求
问题根源
你遇到的问题核心是实体安卓设备无法识别10.0.2.2地址:这个地址是安卓模拟器专属的回环地址,专门用于指向运行模拟器的宿主机,实体设备访问这个地址会指向设备自身,自然无法连接到你电脑上运行的后端服务。
开启react-native-debugger的网络检查器时请求正常,是因为该功能会将APP的所有网络请求代理到运行debugger的电脑端执行,相当于请求直接从电脑发出,自然可以访问10.0.2.2对应的本地服务。
解决步骤
- 确保你的安卓实体设备和运行后端服务、RN打包服务的电脑处于同一局域网环境下
- 查询电脑的局域网IP地址:Windows系统可在cmd中执行
ipconfig,Mac/Linux系统可在终端执行ifconfig或ip addr,获取到的IP格式一般为192.168.x.x - 将代码中
domain变量的值替换为「电脑局域网IP+后端服务端口」,例如http://192.168.3.45:8080 - 可选修改
network_security_config.xml:你已经配置了全局明文流量允许,可直接删除针对10.0.2.2的单独域名配置,也可以新增你自己的局域网IP作为可信域名 - 检查主
AndroidManifest.xml(路径为app/src/main/AndroidManifest.xml)是否已添加网络权限,没有的话补充对应配置:
<uses-permission android:name="android.permission.INTERNET" />
- 重启RN metro打包服务,重新编译安装APP到实体设备后再次测试即可
内容的提问来源于stack exchange,提问作者Hyeonseo Kim
相关产品推荐
相关产品推荐

