Android React native fetch api不适用于localhost、IP甚至10.0.2.2
我在安卓设备上使用expo客户端,并在Android React native fetch api不适用于localhost、IP甚至10.0.2.2,android,django,react-native,expo,fetch-api,Android,Django,React Native,Expo,Fetch Api,我在安卓设备上使用expo客户端,并在localhost:8000上安装了django服务器,我正在尝试使用fetch-in-react-native访问和终结点。我已经看过了,但那不起作用 我还尝试使用我机器的ip地址而不是本地主机,但没有结果。下面是一个示例代码 componentDidMount(){ return fetch('http://my-ip-address:8000/restapi/') .then((response) => { c
localhost:8000
上安装了django服务器,我正在尝试使用fetch-in-react-native访问和终结点。我已经看过了,但那不起作用
我还尝试使用我机器的ip地址而不是本地主机,但没有结果。下面是一个示例代码
componentDidMount(){
return fetch('http://my-ip-address:8000/restapi/')
.then((response) => {
console.log("success")
response = response.json()
}).catch(error => {
console.error(error)
})
}
我做错了什么?解决方案
根据你的密码
- 您的django端口:
:8080
- 获取的目标端口:
:8000
我建议在测试服务器API时使用 这可能是django配置的问题。尤其是当手机的网络浏览器无法获得预期的响应时 从: 请参阅,尽管答案也适用于本地网络:
python manage.py运行服务器0.0.0.0:8000
如果您知道机器的地址,可以将其替换为0.0.0
同样值得注意的是,在响应处理程序中,
response.json()
返回的是承诺,而不是json。相反,您希望:
fetch('http://my-ip-address:8000/restapi/')
.then(response => response.json())
.then(responseJson => {
console.log("success");
console.log(responseJson);
})
.catch(error => {
console.error(error);
})
除了csum的回答之外,请检查防火墙是否允许远程访问django服务器的android设备(设备IP为remote)。如果您安装了防病毒软件并控制防火墙,请确保其防火墙中有规则。是否在设备或模拟器上进行测试?请尝试使用127.0.0.1作为您的ip地址。如果这不起作用,试着用邮递员看看你是否能交流。我在用我的移动设备。我试了127.0.0.1。这不起作用,而且我用邮递员来验证我得到了正确的响应。使用实际的设备有点不同。根据您提供的emulator链接,并使用10.0.2.2,我假设您使用的是emulator。您的手机是否在同一网络上。您是否验证过您没有防火墙或任何阻止传入连接/端口的东西?请澄清,控制台中没有打印“成功”,对吗?您使用的是本地网络地址,所有相关设备都连接到同一网络?对不起,我弄错了。港口是8000
fetch('http://my-ip-address:8000/restapi/')
.then(response => response.json())
.then(responseJson => {
console.log("success");
console.log(responseJson);
})
.catch(error => {
console.error(error);
})