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

Android Studio连接本地Laravel API路由失败问题求助

解决Android APP无法连接本地Laravel API路由的问题

咱们一步步来排查这个问题,从几个核心关键点入手:

1. 检查路由定义与请求路径的匹配度

你Retrofit里的请求是@GET("stocks.json"),结合BASE_URLhttp://192.168.1.106:8000/api/,完整请求地址会是http://192.168.1.106:8000/api/stocks.json。但Laravel的API路由默认在routes/api.php里定义,比如如果你的路由是:

Route::get('stocks', [StockController::class, 'index']);

那正确的API地址应该是http://192.168.1.106:8000/api/stocks,不带.json后缀——Laravel不会自动识别这个后缀,除非你特意配置。

调整方案:

  • 要么把Retrofit的@GET("stocks.json")改成@GET("stocks");
  • 要么在Laravel里配置路由支持后缀:在RouteServiceProvider里添加Route::pattern('extension', 'json');,然后定义路由为Route::get('stocks.{extension}', [StockController::class, 'index']);。

2. 确保Laravel服务器允许外部设备访问

默认情况下,php artisan serve只会绑定到127.0.0.1,只有本机能访问。模拟器或同一局域网的真机无法通过你的IPv4地址(192.168.1.106)连接。

解决办法:
启动服务器时指定监听所有网卡:

php artisan serve --host=0.0.0.0 --port=8000

这样服务器会监听所有可用网络接口,同一局域网的设备就能通过192.168.1.106:8000访问了。

3. 排查跨域(CORS)问题

静态文件能访问但API路由不行,很大概率是跨域拦截。浏览器和APP的HTTP客户端会遵循CORS规则,Laravel默认没有配置跨域允许,导致请求被拦截。

解决办法:

  • 安装Laravel CORS扩展包:
    composer require barryvdh/laravel-cors
    
  • 发布配置文件:
    php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider"
    
  • 在config/cors.php里配置:将paths设为['api/*'],allowed_origins设为['*'](开发环境可用,生产环境需指定具体域名);
  • 在app/Http/Kernel.php的api中间件组里添加\Barryvdh\Cors\HandleCors::class。

配置完成后重启Laravel服务器,再测试APP的API请求。

4. 先验证API路由本身是否可用

不用APP,直接用Postman或浏览器访问http://192.168.1.106:8000/api/stocks(对应你的路由路径):

  • 如果返回404,说明路由定义有问题,回到第一步检查;
  • 如果返回500,查看Laravel的storage/logs/laravel.log找具体错误;
  • 如果浏览器提示跨域错误,说明CORS配置未生效。

5. 模拟器的特殊网络配置(若用模拟器测试)

如果你用的是Android AVD模拟器,主机的127.0.0.1对应模拟器里的10.0.2.2。如果服务器只绑定了127.0.0.1,可以把APP的BASE_URL改成http://10.0.2.2:8000/api/,但更推荐用--host=0.0.0.0启动服务器,这样模拟器和真机都能通过IPv4地址访问。

按上面的步骤排查,应该能解决本地API路由无法访问的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:22:08