You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

物理Android设备无法连接本地localhost API,求技术指导

问题:Android物理设备无法连接本地XAMPP主机API(手机浏览器可正常访问)

环境与现状

  • Web管理面板部署在本地XAMPP,Android应用需连接本地API通信
  • 使用物理Android设备测试,已将主机IPv4作为Base URL
  • 清单文件已添加android:usesClearTextTraffic="true"
  • 手机浏览器通过主机IP可正常访问网站/API,电脑浏览器用localhost正常;迁移到在线服务器后App可正常运行,但本地IP时连登录功能都无法使用

当前使用的Base URL代码

//For retrofit base url must end with /
public static final String BASE_URL = "http://192.168.xxx.xx/api/";

//For retrofit base url must end with /
public static final String PRODUCT_IMAGE_URL = "http://192.168.xxx.xx/poduct_images/";

排查与解决步骤

1. 检查主机防火墙规则

主机电脑的防火墙可能拦截了Android设备的请求:

  • 打开Windows Defender防火墙(或第三方防火墙),添加入站规则,允许Apache使用的80端口通过
  • 临时关闭防火墙测试,若App能正常连接,说明是防火墙规则问题,需配置永久放行

2. 修改Apache监听配置

XAMPP的Apache默认可能仅绑定localhost,需让它监听所有网卡:

  • 打开XAMPP控制面板,点击Apache的Config -> httpd.conf
  • 找到Listen 80,将其改为Listen 0.0.0.0:80(取消特定IP绑定,监听所有网卡)
  • 重启Apache服务

3. 排查Retrofit配置问题

  • 确认Retrofit实例没有额外的拦截器、代理设置篡改请求
  • 添加日志拦截器查看请求详情,定位错误原因:
    HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
    logging.setLevel(HttpLoggingInterceptor.Level.BODY);
    
    OkHttpClient client = new OkHttpClient.Builder()
        .addInterceptor(logging)
        .build();
    
    Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(BASE_URL)
        .client(client)
        .addConverterFactory(GsonConverterFactory.create())
        .build();
    
    查看Logcat中的请求日志,确认是否存在连接超时、404、500等具体错误

4. 确认设备在同一局域网

  • 检查手机和主机电脑是否连接同一WiFi网络(避免手机用移动数据、主机用WiFi的跨网情况)
  • 再次核对主机IPv4地址,可通过手机终端执行ping 192.168.xxx.xx测试连通性

5. 检查Apache虚拟主机配置(若有)

  • 若配置了虚拟主机,确保VirtualHost块监听*:80而非127.0.0.1:80
  • 确认虚拟主机的ServerName/ServerAlias包含主机IP,或允许任意主机访问

6. 清除App缓存数据

  • 卸载重装App,或清除App的缓存与数据,避免旧URL缓存干扰

内容的提问来源于stack exchange,提问作者Taimoor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 06:05:23