React Native fetch请求在安卓上总是失败怎么办?
我在安卓真机测试时,用fetch('https://api.example.com/data')请求老是报错“Network request failed”,iOS模拟器却能正常获取数据。已经试过加credentials: 'include'和检查AndroidManifest.xml里的互联网权限,还是不行。
代码是这样的:
try {
const response = await fetch(url);
return await response.json();
} catch (error) {
console.error('请求失败:', error);
}
日志只显示网络错误,抓包工具也看不到请求发出,是不是安卓有特殊配置?
你虽然加了互联网权限,但还得检查一下
android/app/src/main/res/xml/network_security_config.xml文件有没有配置信任你的域名或允许明文流量。先在
android/app/src/main/AndroidManifest.xml的application标签里加上:然后在
res/xml目录下创建network_security_config.xml:这样至少能先跑通。线上环境记得关掉
cleartextTrafficPermitted,只保留必要的域名。另外 fetch 可以优化成更健壮一点的写法,避免因为默认配置导致跨域或 cookie 问题:
最后,真机测试时别忘了时间同步问题,系统时间不准也会导致 HTTPS 握手失败,我就踩过这坑。抓不到包很可能请求根本没发出去,先确保网络层放行再说。