使用iOS模拟器的Managed Expo React Native App调用API遇网络错误
解决Expo React Native iOS模拟器API请求错误码999的方案
检查Expo网络权限配置
打开app.json或app.config.js,确认iOS的NSAppTransportSecurity设置:如果是本地HTTP接口,必须开启NSAllowsArbitraryLoads;如果是HTTPS接口,要确保域名在NSExceptionDomains里配置正确。示例配置:"ios": { "infoPlist": { "NSAppTransportSecurity": { "NSAllowsArbitraryLoads": true } } }要是用了HTTPS,别忘了在模拟器里信任Proxyman的证书——进设置→通用→VPN与设备管理,找到Proxyman证书并开启信任。
重置开发环境状态
- 关掉Expo开发服务器,用
expo start --clear清除缓存后重启。 - 重启iOS模拟器,甚至可以重置模拟器内容(菜单栏点模拟器→重置内容和设置)。
- 刷新Mac的DNS缓存:终端运行
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder。
- 关掉Expo开发服务器,用
核对API请求细节
- 代码里的请求URL别用
localhost,iOS模拟器的localhost指向自己,要换成Mac的本地IP(比如192.168.x.x)。 - 检查请求头,有些API会限制非浏览器/Postman的请求,试试把请求的
User-Agent改成和浏览器一致的内容。 - 对比浏览器/Postman的请求,确保请求方法、参数、body格式(form-data或JSON)完全一致。
- 代码里的请求URL别用
排查Proxyman干扰
- 检查Proxyman的SSL代理配置,确认目标API域名的SSL解密是否正常,错误码999大多和SSL解密失败、代理规则冲突有关。
- 暂时关掉Proxyman,直接在Expo里请求API,看能不能成功,排除代理的问题。
验证版本兼容性
Expo 48和RN 0.71.8的组合有没有已知网络bug?试试更新到Expo 49(注意RN版本要匹配),或者回退到之前能正常运行的版本。
内容的提问来源于stack exchange,提问作者Malcolm S
相关产品推荐
相关产品推荐

