这对我来说是一个长期存在的问题,我根本找不到解决方案。
在我的反应原生项目(react-native-cli(中,我使用 axios 包向服务器发送请求。 但是当我用我的安卓手机进行测试时,它给出了[错误:网络错误]。 使用模拟器,没关系。
我确定这不是后端问题,因为我已经用几台服务器进行了测试。 我也使用了 fetch 代替,但遇到了同样的错误。
下面是版本信息。
"axios": "^0.19.0",
"react": "16.9.0",
"react-native": "0.61.5",
有时,它也适用于安卓手机。 这个问题是最大的谜团,我受了很长时间的苦。
遇到这个问题的人,请让我活着。 感谢您的仔细阅读。
有时,即使使用安卓模拟器也无法正常工作。但是在删除原始模拟器并创建新的模拟器后,它就可以工作了。
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);
})
我认为这是http和https请求的问题。因此,要启用https请求,请尝试以下方法:
实现此目的的简单方法是将此属性用于您的AndroidManifest.xml
,其中您允许所有请求的所有http
:
android:usesCleartextTraffic="true"
尝试在AndroidManifest中添加以下代码.xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
对于 Android,不要使用 :localhost
,请使用10.0.2.2
。
面临同样的问题并通过执行以下操作解决了它:
1-找到机器的IP地址。
2-将您的本地主机地址替换为您的IP地址**
replace ==> 'http://localhost:8000/api/download'
with ==> 'http://192.120.16.108:8000/api/download'
我尝试添加访问网络状态权限并使用明文流量,但这两种解决方案都没有帮助。我仍然收到此错误。在我的所有端点 (30+( 中,我只在发送带有刷新令牌作为参数的注销请求时收到此错误。API 的其余部分工作正常。
我发现了问题。终结点返回 205,这将创建返回网络错误而不是成功的错误。我正在考虑告诉我的后端将响应状态代码更改为 200。
我的问题是我在模拟器上运行我的应用程序时 http://127.0.0.1 使用主机 url。
对于模拟器,使用"localhost"或"127.0.0.1"不适用,因为模拟器仅在其范围内尝试。
如果在本地环境中运行应用,请确保设备和服务器位于同一网络中,并使用服务器的 IP 地址作为主机 URL。
就我而言,这是 http://192.168.8.101:8080
我面临同样的问题。我通过使用核心 6 在我的后端项目中进行一些更改来解决这个问题 ASP.NET。我在后端有两个午餐应用程序的网址:"applicationUrl": "https://localhost:7218,http://localhost:5218"
,我将其更改为"applicationUrl":"http://localhost:5218".
在我的反应本机应用程序中,我使后端主机http://10.0.2.2:5218
,它对我有用。
面临同样的问题并通过执行以下操作来解决它:
1-确保您的PC和Android设备(如果是外部设备(连接到相同的wifi网络 2-查找机器的IP地址||设置=>wifi=>选择您连接到的wifi =>复制IPV4地址并使用它而不是本地主机。 3-将您的本地主机地址替换为您的IP地址**
替换 ==> 'http://localhost:8000/register
与 ==> 'http://192.120.16.108:8000/register