Android Studio通过USB连接真机访问本地API时遇Timeout Error求助
嘿,我之前也碰到过一模一样的真机访问本地API超时的问题,结合你的环境(Windows8.1 + Android Studio3 + XAMPP + Volley),给你几个一步步排查的解决方案,亲测有效:
解决USB真机访问本地XAMPP PHP API超时问题
1. 先确认网络连通性(最基础但最容易忽略)
- 必须保证你的安卓真机和运行XAMPP的Windows电脑连的是同一个WiFi网络(如果用USB共享网络的话看第5点),不然真机根本找不到你的电脑IP。
- 电脑上按Win+R输入
cmd,执行ipconfig命令,找到当前WiFi网卡的IPv4地址(别选错网卡,比如虚拟机网卡或者以太网的)。 - 打开真机的浏览器,直接输入
http://[你的IPv4地址]/你的API接口路径,比如http://192.168.1.105/api/get_data.php。如果浏览器都打不开,那Volley肯定也会超时,先解决这个网络问题。
2. 关闭/配置Windows防火墙(最常见的罪魁祸首)
Windows自带防火墙默认会阻止外部设备访问本地服务:
- 打开「Windows Defender防火墙」→ 点击「允许应用或功能通过Windows Defender防火墙」→ 点击「更改设置」。
- 找到
Apache HTTP Server(或者XAMPP相关的服务),把专用网络和公用网络的勾选框都打上(同WiFi的话专用网络够,但保险起见都勾)。 - 如果找不到Apache的条目,就点击「允许另一个应用」,找到XAMPP安装目录下的
apache\bin\httpd.exe,添加后再勾选网络权限。 - 配置完记得重启Apache服务。
3. 修改XAMPP Apache的访问权限
默认Apache只允许本地访问,需要放开外部访问权限:
- 打开XAMPP控制面板,点击Apache的「Config」→ 选择
httpd.conf文件。 - 找到
Require local这一行,把它改成Require all granted(或者更严谨一点,改成Require ip [你的局域网网段],比如你的IP是192.168.1.100,就写Require ip 192.168.1)。 - 再找到
Listen 80,确保它是监听所有地址的(如果是Listen 127.0.0.1:80就改成Listen 80)。 - 保存文件,重启Apache服务生效。
4. 调整Volley的超时配置
虽然模拟器能用,但真机的网络延迟可能更高,默认Volley超时时间太短:
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext()); StringRequest stringRequest = new StringRequest(Request.Method.GET, "http://你的IPv4地址/api/xxx.php", response -> { // 处理成功响应 }, error -> { // 处理错误 }) { @Override protected RetryPolicy getRetryPolicy() { // 把超时时间延长到10秒,重试1次 return new DefaultRetryPolicy( 10000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT ); } }; requestQueue.add(stringRequest);
⚠️ 注意:请求里绝对不能用localhost或者127.0.0.1,真机访问这两个地址是指它自己,不是你的电脑!
5. 如果用USB共享网络的特殊配置
如果你是用USB连接电脑共享网络,那真机的网络是走电脑的虚拟网卡,此时电脑的IPv4地址通常是192.168.137.1(Windows默认的USB共享地址),你需要用这个地址访问API,同时也要确保防火墙和Apache配置允许这个网段访问。
内容的提问来源于stack exchange,提问作者Pankaj
相关产品推荐
相关产品推荐

