欠伸展肢体,吟咏心自愉。这篇文章主要讲述Android上的React Native Fetch返回网络请求失败相关的知识,希望能为你提供帮助。
我正在构建一个使用Laravel后端的React Native移动应用程序,当前在localhost:8000上运行。当从android设备向我的服务器发送获取请求时,我的应用程序会收到以下错误日志:
文章图片
我的代码如下:
export default class App extends Component {
login() {
fetch('http://localhost:8000/api/establishments/get')
.then((response) =>
response.json())
.then((responseJson) =>
{
console.log('success!');
})
.catch((error) =>
{
console.error(error);
});
}render() {
return (
<
TouchableOpacity activeOpacity={.5} onPress={() =>
this.login()}>
<
Text>
Sign In<
/Text>
<
/TouchableOpacity>
);
}
}
当我将确切路由复制并粘贴到浏览器中时,服务器会按预期成功完成响应。我相信这是我的应用程序的网络权限问题?我刚刚开始学习一周前的React Native,并且会感激任何帮助。
答案我怀疑127.0.0.1或localhost将指向服务器当前正在运行的计算机中的模拟器本身。如果您使用的是AVD,请尝试将10.0.0.0.1 / localhost替换为10.0.2.2,如果您使用的是Genymotion或使用计算机的实际IP地址,请尝试将其替换为10.0.3.2。此外,您还应该确保您的Android应用程序可以使用互联网。你可以通过添加来做到这一点
<
uses-permission android:name="android.permission.INTERNET" />
在AndroidManifest.xml中。
另一答案Android在模拟器中运行,而Android在模拟器中运行。仿真器模拟真实设备,而模拟器仅模仿设备。因此,Android上的localhost指向模拟的Android设备,而不是运行服务器的计算机。您应该使用计算机的IP地址在您的请求路径中更改localhost。
【Android上的React Native Fetch返回网络请求失败】更多细节:https://github.com/facebook/react-native/issues/10404#issuecomment-267303151
推荐阅读
- 如何在Azure Web Apps中将redirect_uri协议设置为HTTPS
- 如何使用VPN以编程方式更改Android设备的DNS()
- ReadOnlyStringWrapper.ReadOnlyPropertyImpl从哪里获取来自ChangeListener的oldValue()
- 如何让用户在Android中随意绘制长画布()
- 如何将dp转换为像素,并使用它在android中绘制到画布
- Android在画布上操纵图像 - 使用触摸,移动,放大/缩小,缩放
- Android(libstreaming)RTSP服务器可以播放视频但没有声音
- 如何使用robolectric对Android音频录制应用进行单元测试
- 如何在Android中开发音频流应用程序()