Flutter无法连接本地.NET Core Web API问题求助
Flutter与.NET 7 API本地连接问题排查方案
一、.NET API端配置检查
- 监听IP与端口配置:
在Program.cs中确保Kestrel监听所有IP,而非仅localhost:
同时修改builder.WebHost.ConfigureKestrel(options => { options.ListenAnyIP(5000); // 替换为你的API端口 });launchSettings.json的applicationUrl为:"applicationUrl": "http://0.0.0.0:5000;https://0.0.0.0:5001" - 临时关闭CORS限制(开发环境):
在Program.cs中添加CORS中间件(需放在UseRouting之后、UseAuthorization之前):builder.Services.AddCors(options => { options.AddPolicy("AllowAll", policy => { policy.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader(); }); }); app.UseCors("AllowAll"); - 验证API可用性:
在电脑浏览器中直接访问http://你的电脑局域网IP:端口/api/控制器路径,能返回数据才说明API正常对外服务。
二、Flutter端适配调整
- 安卓模拟器特殊IP:
模拟器访问电脑本地API需用10.0.2.2(对应电脑localhost),Genymotion模拟器则用10.0.3.2。 - 真机测试要求:
手机与电脑必须在同一WiFi网络下,同时关闭电脑防火墙(或添加API端口的允许规则),Flutter代码中直接使用电脑的局域网IP(如192.168.42.232)。 - 安卓网络权限配置:
在android/app/src/main/AndroidManifest.xml中添加:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 若API用HTTP而非HTTPS,需添加以下配置 --> <application android:usesCleartextTraffic="true">
三、代码细节排查
- Flutter请求地址校验:
确保ServiceDataProvider中的基础URL正确:
同时检查请求路径与.NET控制器的路由注解(如// 安卓模拟器用 final String baseUrl = 'http://10.0.2.2:5000/api'; // 真机用 // final String baseUrl = 'http://192.168.42.232:5000/api';[Route("api/[controller]")])完全匹配。 - 捕获请求错误信息:
在Flutter请求代码中添加异常捕获,打印具体错误:
根据错误信息定位问题(如连接超时、404、CORS拦截等)。try { final response = await http.get(Uri.parse('$baseUrl/your-endpoint')); if (response.statusCode != 200) { print('状态码:${response.statusCode},响应内容:${response.body}'); } } catch (e) { print('请求异常:$e'); }
内容的提问来源于stack exchange,提问作者user21497668
相关产品推荐
相关产品推荐

