在React Native中使用axios时出现网络错误

sd2nnvve  于 2022-11-17  发布在  React
关注(0)|答案(7)|浏览(463)

这对我来说是一个长期存在的问题,我根本找不到解决办法。
在我的react原生项目(react-native-cli)中,我使用axios包向服务器发送请求。但是当我用我的android手机测试时,它给出[错误:网络错误]。使用仿真器,没有问题。
我确信这不是后端问题,因为我已经在几个服务器上测试过了。我也用了fetch,但还是得到了同样的错误。
以下是版本信息。

"axios": "^0.19.0",
"react": "16.9.0",
"react-native": "0.61.5",

有时,它的工作在android手机太.这个问题是最大的谜,我遭受了很长一段时间.
有人谁经历过这个问题,请活着我。谢谢你仔细阅读。

  • 有时,它不工作,甚至与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);
        })
jhdbpxl9

jhdbpxl91#

我认为这是http和https请求的问题。所以要启用https请求,请尝试下面的一个:
实现这一点的简单方法是将此属性用于AndroidManifest.xml,其中允许所有http用于所有请求:

android:usesCleartextTraffic="true"
smtd7mpg

smtd7mpg2#

尝试在AndroidManifest.xml中添加以下代码

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
igsr9ssn

igsr9ssn3#

对于Android,请不要使用:请使用10.0.2.2

ovfsdjhp

ovfsdjhp4#

遇到相同的问题,并通过以下方式解决:

1-查找计算机的IP地址。
2-将本地主机地址替换为IP地址**

replace ==>  'http://localhost:8000/api/download'

 with ==> 'http://192.120.16.108:8000/api/download'
jyztefdp

jyztefdp5#

我尝试过添加访问网络状态权限和usesCleartextTraffic,两种解决方案都没有帮助。我仍然收到这个错误。在我所有的端点(30+)中,我只在发送一个以刷新令牌作为参数的注销后请求时收到这个错误。其余的API工作正常。
我发现了这个问题。端点返回205,这会导致返回网络错误而不是成功的错误。我正在考虑告诉我的后端将响应状态代码更改为200。

3bygqnnd

3bygqnnd6#

我的问题是,当我在模拟器上运行我的应用程序时,我将主机URL用作http://127.0.0.1
对于仿真器,“localhost”或“www.example.com“的使用127.0.0.1不适用,因为仿真器仅在其作用域内尝试。
如果您在本地环境中运行应用,请确保您的设备和服务器位于同一网络中,并使用服务器的IP地址作为主机URL。
在我的例子中,它是http://192.168.8.101:8080

bis0qfac

bis0qfac7#

我也遇到了同样的问题。我用ASP.NETCore6在我的后端项目中做了一些修改来解决这个问题。我在后端有两个用于午餐应用程序的URL:"applicationUrl": "https://localhost:7218,http://localhost:5218",我将其更改为"applicationUrl":"http://localhost:5218".在我的React原生应用程序中,我将后端主机设置为http://10.0.2.2:5218,它对我很有效。

相关问题