React Native Expo调用特定API报TypeError: Network request failed求助
React Native Expo调用特定API抛出
TypeError: Network request failed错误 问题情况
在React Native Expo项目中调用目标API时出现TypeError: Network request failed错误,但调用第三方API(如https://randomuser.me/api/)可以正常获取数据。已经尝试过相关解决方案,但均无效,怀疑是目标API本身存在问题。
目标API请求代码
const val = { uId: 'molly', pwd: '123', id: '1' } const url = 'https://c........com.tw:8899' let header = { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(val), } fetch(`${url}/auth/login`, header) .then((r) => r.json()) .then((d) => { if (d.code === 0) { console.log(d.data) } else { console.log('MSG', d.msg) } }) .catch((err) => console.log(err))
可正常运行的API请求代码
fetch('https://randomuser.me/api/') .then((r) => r.json()) .then((d) => { console.log('ok') }) .catch((err) => console.log(err))
排查建议
- 验证目标API的可用性:
- 用Postman、curl或浏览器直接访问目标API的
/auth/login接口,传入相同请求参数,确认是否能正常响应。如果第三方工具也无法访问,说明是API服务端问题(比如端口未对外开放、SSL证书无效、接口路径错误) - 检查目标API的SSL证书:Expo对HTTPS证书校验严格,若证书为自签、过期或域名不匹配,会直接拒绝请求。可在浏览器打开目标URL,查看证书状态是否正常
- 用Postman、curl或浏览器直接访问目标API的
- 核对请求格式与参数:
- 确认目标API是否接受
application/json格式请求体,部分API可能要求x-www-form-urlencoded格式,可尝试修改请求头为{'Content-Type': 'application/x-www-form-urlencoded'},并将请求体改为new URLSearchParams(val)后重新测试 - 检查请求体中的参数名称是否与API文档要求一致(例如是否应为
userId而非uId,password而非pwd)
- 确认目标API是否接受
- 排查Expo项目的网络限制:
- 若在真机测试,确保设备与API服务器处于同一网络环境,或API服务器具备公网访问权限
- 虽然能访问第三方API,仍可确认
app.json中的iOS ATS配置或安卓网络安全配置是否存在特殊限制,不过这部分概率较低
内容的提问来源于stack exchange,提问作者MOLLY
相关产品推荐
相关产品推荐

