React Native发布版中onEndEditing内Axios.Get失效问题求助
React Native发布版axios GET请求失效排查方案
可能的原因及解决步骤
1. 网络权限配置缺失
发布版应用默认不会自动开启网络权限,需手动配置:
- Android:检查
AndroidManifest.xml中是否添加<uses-permission android:name="android.permission.INTERNET" />,调试版会自动注入该权限,但发布版需要显式声明。 - iOS:由于接口使用HTTP协议,需在
Info.plist中配置NSAppTransportSecurity允许非HTTPS访问:<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>10.113.16.113</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict>
2. URL拼接的编码问题
直接拼接变量可能导致特殊字符编码错误,建议用axios的params参数自动处理编码:
axios.get('http://10.113.16.113:8082/api/skuattribute/find', { params: { OP: opNumber, line: selectedLine } })
3. 错误日志无法查看
发布版中console.log的日志无法直接获取,需替换为可感知的错误提示:
.catch(error => { alert('请求失败:' + JSON.stringify(error)); });
4. 同步阻塞操作影响流程
代码中的sleep(200)是同步阻塞操作,发布版可能导致线程卡死,改用异步的setTimeout:
// 替换sleep(200) setTimeout(() => { GetLocalAttributes(); }, 200);
5. 变量作用域或类型问题
再次确认opNumber和selectedLine的类型与值,比如是否存在数字转字符串时的隐式错误,可在请求前用alert打印变量的具体内容:
alert(`OP: ${typeof opNumber} - ${opNumber}, Line: ${typeof selectedLine} - ${selectedLine}`);
6. 后端接口的访问限制
检查后端服务器是否对设备IP、请求来源做了限制,比如仅允许调试环境IP访问,导致发布版设备请求被拦截。
内容的提问来源于stack exchange,提问作者Tiago Martins
相关产品推荐
相关产品推荐

