Flutter应用无法与.NET Core Web API建立HTTP连接求助
Flutter无法连接.NET Core Web API登录接口问题排查与解决
问题背景
开发.NET Core Web API后端+Flutter前端应用时,后端API正常运行,但Flutter端无法建立HTTP连接完成登录:
- 使用
localhost/127.0.0.1时触发错误:OSError (OS Error: Connection refused, errno = 111) - 使用
10.0.2.2时无报错但响应体为空 - 已尝试切换http/https协议、防火墙放行端口、更换地址,均未解决
现有实现代码
登录请求模型
class LoginRequest { final String usernameOrEmail; final String password; LoginRequest({required this.usernameOrEmail, required this.password}); Map<String, dynamic> toJson() { return { 'usernameOrEmail': usernameOrEmail, 'password': password, }; } }
用户服务抽象接口
import 'package:frontend/requests/login_request.dart'; abstract class UserService { Future<bool> login(LoginRequest request); }
服务实现类
import 'dart:convert'; import 'package:frontend/requests/login_request.dart'; import 'package:frontend/services/abstractions/user_service.dart'; import 'package:http/http.dart' as http; class UserServiceImpl implements UserService { @override Future<bool> login(LoginRequest request) async { try { var response = await http.post( Uri.http("127.0.0.1:5224", "/api/User/login"), body: jsonEncode(request.toJson())); var body = jsonDecode(response.body); return true; } catch (e) { return false; } } }
排查与解决步骤
1. 修正.NET Core API绑定地址
打开后端launchSettings.json,修改applicationUrl让API绑定所有网卡(而非仅本地回环地址),确保外部设备可访问:
"applicationUrl": "http://0.0.0.0:5224;https://0.0.0.0:7224"
修改后重启后端服务生效。
2. 补全Flutter请求头
当前请求缺少Content-Type: application/json头,后端无法正确解析JSON参数,修改服务实现:
@override Future<bool> login(LoginRequest request) async { try { // 替换为你的主机局域网IP(如192.168.1.100),模拟器可用10.0.2.2 var response = await http.post( Uri.http("192.168.1.100:5224", "/api/User/login"), headers: { 'Content-Type': 'application/json', // 必须添加的JSON请求头 }, body: jsonEncode(request.toJson())); // 打印响应信息用于排查 print('状态码: ${response.statusCode}'); print('响应体: ${response.body}'); return response.statusCode == 200; } catch (e) { print('请求错误: $e'); return false; } }
3. 根据运行环境选择正确地址
- Android模拟器:用
10.0.2.2映射主机127.0.0.1,需确保后端绑定127.0.0.1或0.0.0.0 - iOS模拟器:直接使用
localhost或主机局域网IP - 真机测试:必须使用主机的局域网IP(如
192.168.x.x),且设备与主机在同一WiFi网络
4. 验证API本身可用性
用Postman或浏览器向后端地址发送POST请求,携带JSON参数:
{ "usernameOrEmail": "test", "password": "test123" }
确认API能正常返回响应,排除后端逻辑问题。
5. 检查防火墙与网络规则
- 放行Windows防火墙中.NET Core服务的5224端口
- 真机测试时,临时关闭主机防火墙或添加允许外部访问的规则
内容的提问来源于stack exchange,提问作者Vladimir99
相关产品推荐
相关产品推荐

