React Native里fetch请求总是超时怎么办?
我在用React Native做App,调用公司内网API时经常遇到fetch请求超时的问题,明明网络是通的,浏览器能正常访问接口。
试过加timeout参数但好像没用,也检查了AndroidManifest.xml里的网络权限,都配好了。代码大概这样:
fetch('http://192.168.1.100:8080/api/data', {
method: 'GET',
timeout: 5000,
})
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error('请求失败:', err));
但还是经常卡住然后报Network request failed,这到底该怎么解决?
先给你个能用的超时封装代码:
然后解决 Android 拦截 HTTP 的问题,这才是重点。在
android/app/src/main/res/xml目录下新建一个network_security_config.xml文件(没有 xml 文件夹就自己建一个):最后在
AndroidManifest.xml的application标签里加上这个配置引用:iOS 的话记得改 Info.plist 里的 NSAppTransportSecurity 允许 Arbitrary Loads。改完重新跑一下
npx react-native run-android应该就好了。