在 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进行网络请求的方法

用 axios 在 react native 中上传图片

如何在 React Native 中使用 Axios 设置授权标头

React Native使用axios进行网络请求

AXIOS 调用在 React-Native 0.63 中给出网络错误