在 React Native 中使用 axios 时出现网络错误
Posted
技术标签:
【中文标题】在 React Native 中使用 axios 时出现网络错误【英文标题】:Network Error when use axios in React Native 【发布时间】:2020-04-23 06:47:08 【问题描述】:这对我来说是长期存在的问题,我根本找不到解决方案。
在我的 react native 项目(react-native-cli)中,我使用 axios 包向服务器发送请求。 但是当我用我的安卓手机进行测试时,它给出了[错误:网络错误]。 用模拟器就好了。
我确定这不是后端问题,因为我已经使用多台服务器进行了测试。 而且我也使用了 fetch ,但得到了同样的错误。
这是版本信息。
"axios": "^0.19.0",
"react": "16.9.0",
"react-native": "0.61.5",
有时,它也适用于安卓手机。 这个问题是最大的谜,我受了很长时间。
遇到此问题的人,请让我活着。 感谢您的仔细阅读。
有时,即使使用 android 模拟器也无法正常工作。但是在删除原来的模拟器并创建新的模拟器后,它就可以工作了。
const serverUrl = "https://server.com";
axios.post(serverUrl + "/api/candidates/login",
"email": this.state.email ,
"password": this.state.password
,
headers:
'Content-Type': 'application/json'
).then((response) =>
console.log(response.data);
).catch((error) =>
console.log(error);
)
【问题讨论】:
此错误与"axios": "^0.19.0"
有关。如果您将 axios 版本降级为 ex :"axios": "^0.18.0"
然后运行 npm install
,然后如果您运行您的应用程序,它将成功运行。
我不知道正确的解决方案,但这是解决方法。
没有帮助。我降级了 axios 但仍然是同样的错误。我认为这可能像缓存问题。
@AndrewTerex 你找到解决办法了吗?
不行,我要回世博了。
【参考方案1】:
我认为这是 http 和 https 请求的问题。所以要启用 https 请求,请尝试以下方法:
实现这一点的简单方法是将此属性用于您的AndroidManifest.xml
,您允许所有http
用于所有请求:
android:usesCleartextTraffic="true"
【讨论】:
我已经将它添加到应用标签中的“AndroidManifest.xml”中。 在将其添加到 AndroidManifest 之后,您是否执行了 android:bundle,然后构建了一个新的 apk 并尝试了它? 我正在使用我的安卓手机在开发服务器上进行测试。 在 android 9 之前的版本中添加此选项会有什么影响?【参考方案2】:尝试在 AndroidManifest.xml 中添加波纹管代码
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
【讨论】:
【参考方案3】:对于 Android,不要使用:localhost
,而是使用 10.0.2.2
。
【讨论】:
以上是关于在 React Native 中使用 axios 时出现网络错误的主要内容,如果未能解决你的问题,请参考以下文章
在 React Native 中使用 axios 时出现网络错误
关于React Native使用axios进行网络请求的方法