React Native中Axios GET请求在Android模拟器抛出网络错误
解决Android模拟器访问本地XAMPP API的Network Error问题
嗨,我刚碰到过和你一模一样的情况,给你几个实用的解决步骤,应该能快速搞定这个网络错误:
核心原因
Android模拟器本质是一个独立的虚拟机,它的localhost或者127.0.0.1指向的是模拟器自身,而不是你的电脑。Postman能正常访问是因为它直接运行在你的电脑上,自然能访问本地的XAMPP服务。
具体解决办法
1. 使用电脑的局域网IP替换localhost
首先找到你电脑在局域网中的IP地址:
- Windows:打开命令提示符,运行
ipconfig,找到「以太网适配器 本地连接」里的「IPv4 地址」 - Mac/Linux:打开终端,运行
ifconfig或者ip addr,找到对应网络接口的inet地址
然后把你的axios请求URL改成:
axios.get('http://你的电脑局域网IP/api/test') .then((response) => { console.log(response); }) .catch((error) => { console.log(error); });
比如你的IP是192.168.3.10,就写成http://192.168.3.10/api/test(如果XAMPP的Apache端口是默认80,不用加端口;如果改了端口,比如8080,就要写成http://192.168.3.10:8080/api/test)
2. 配置XAMPP允许外部访问
默认情况下XAMPP的Apache可能只允许本地访问,需要修改配置:
- 打开XAMPP控制面板,点击Apache的「Config」→「httpd.conf」
- 找到类似下面的配置段:
<Directory "C:/xampp/htdocs"> ... Require local ... </Directory>
- 把
Require local改成Require all granted,或者添加你的局域网IP段的允许规则,比如Require ip 192.168.3.0/24 - 重启Apache服务
3. 检查电脑防火墙设置
电脑的防火墙可能会阻止模拟器的请求:
- 暂时关闭防火墙测试一下,如果能正常访问,再在防火墙上添加规则,允许Apache的端口(默认80)接收来自局域网的连接
4. 备选方案:使用adb反向代理
如果上面的方法都不生效,可以用adb命令把模拟器的端口转发到电脑:
- 确保模拟器已经启动,并且adb命令能正常使用
- 在终端/命令提示符运行:
adb reverse tcp:80 tcp:80
(如果你的Apache端口不是80,把两个80都改成对应的端口号)
3. 之后你就能在模拟器里用http://localhost/api/test访问本地API了
内容的提问来源于stack exchange,提问作者Matthew Dejager
相关产品推荐
相关产品推荐

