React Native调用登录API持续出现网络错误,求解决方案
React Native登录API网络错误排查方案
验证API地址有效性
把BASE_URL+"/auth/login"拼接成完整URL,在Postman或浏览器里用相同参数发起POST请求测试。如果这里也报错,说明是API本身的问题(比如服务器未启动、路径错误、权限限制),先解决API端问题;如果能正常返回,再排查RN项目配置。iOS ATS配置检查
iOS默认限制非HTTPS请求或证书不合法的HTTPS请求:- 打开项目的
ios/[项目名]/Info.plist文件 - 添加ATS临时例外(仅用于测试,上线前必须替换为合法HTTPS证书):
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
- 打开项目的
Android网络权限与明文请求设置
- 确保
android/app/src/main/AndroidManifest.xml里添加了网络权限:<uses-permission android:name="android.permission.INTERNET" /> - 如果API用的是HTTP协议(非HTTPS),Android 9+需要开启明文请求支持,在
<application>标签里添加:<application ... android:usesCleartextTraffic="true">
- 确保
请求格式适配
确认API要求的Content-Type:- 如果API需要
application/x-www-form-urlencoded而非application/json,修改请求配置:const params = new URLSearchParams(); params.append('username', 'physician@doral.com'); params.append('password', 'password'); params.append('device_token', ''); params.append('device_type', 1); params.append('latitude', ''); params.append('longitude', ''); const config = { method: 'post', url: BASE_URL + "/auth/login", headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, data: params };
- 如果API需要
排查网络环境与代理
- 真机测试时,确保设备网络正常(关闭VPN、代理),若API是内网服务,需和服务器在同一WiFi下
- 模拟器测试时,检查模拟器的网络连接是否正常,可尝试重启模拟器
打印完整错误日志
修改catch块,输出更详细的错误信息,定位具体问题:.catch((err) => { console.log("完整错误:", err); console.log("响应数据:", err?.response); console.log("请求配置:", err?.config); Alert.alert("错误详情", JSON.stringify(err, null, 2)); });
内容的提问来源于stack exchange,提问作者Suraj nayi
相关产品推荐
相关产品推荐

