Flutter对接Laravel API POST请求失败,求协助排查
Flutter调用Laravel登录API失败排查方案
核心问题1:模拟器网络地址指向错误
Android模拟器中127.0.0.1指向模拟器自身,而非运行Laravel服务的电脑主机。必须替换为以下两种地址之一:
- 电脑的局域网IP(可通过
ipconfig/ifconfig查询,例如192.168.3.10) - Android模拟器专用回环地址
10.0.2.2(等价于主机的127.0.0.1)
修改AuthLogin.dart中的API地址:
Uri.parse('http://10.0.2.2:8000/api/v1/auth/login')
核心问题2:POST请求Body格式不匹配
你设置了Content-Type: application/json,但直接传入Map作为body时,http库会默认以form-data格式发送,导致Laravel无法正确解析JSON参数。必须用jsonEncode将Map转为JSON字符串:
更新POST请求代码:
// 先导入dart:convert包 import 'dart:convert'; // 修改请求部分 final response = await http.post( Uri.parse('http://10.0.2.2:8000/api/v1/auth/login'), headers: {'Content-Type': 'application/json'}, body: jsonEncode({ "email" : username, "password" : password }) );
无效尝试:GET请求带Body
HTTP规范中GET请求不应携带Body,Laravel的登录接口必然是为POST设计的,直接放弃GET方式的尝试。
辅助排查建议
- 查看Flutter控制台打印的
response.body,Laravel通常会返回具体错误信息(比如参数缺失、格式错误),可快速定位问题。 - 确认Laravel的CORS配置允许模拟器请求:使用
fruitcake/laravel-cors包,临时配置允许所有来源测试(生产环境再做限制)。
内容的提问来源于stack exchange,提问作者Josh Lee
相关产品推荐
相关产品推荐

