Flutter发送Post请求遇405错误(数据正确仍报错)
问题解决及学习资源建议
405状态码问题排查与修复
405状态码意味着当前请求方法(POST)不被目标API端点允许,按以下步骤处理:
- 先验证mocki.io端点的支持方法:用curl或Postman发送POST请求到你的
_loginUrl,如果同样返回405,说明这个mock端点只配置了GET方法,需要去mocki.io重新创建一个支持POST的API。 - 修正请求代码的缺失项:即便端点支持POST,你的请求缺少
Content-Type头,服务器无法识别你发送的JSON数据,修正后的代码如下:
class HttpService { static const _loginUrl = 'https://mocki.io/v1/d4867d8b-b5d5-4a48-a4ab-79131b5809b8'; static login(cpf, password, context) async { Map<String, String> request = {"name": cpf, "city": password}; final response = await http.post( Uri.parse(_loginUrl), body: jsonEncode(request), headers: {'Content-Type': 'application/json'}, // 新增JSON类型请求头 ); if (response.statusCode == 200) { await Navigator.push( context, MaterialPageRoute(builder: (context) => HomeScreen())); } else { await EasyLoading.showError( "Error Code : ${response.statusCode.toString()} $cpf $password"); } } }
学习资源推荐
Flutter网络请求
- 官方文档的「发送网络请求」章节,系统学习http包的基础用法,以及dio第三方包的进阶用法
- 国内视频平台的Flutter实战教程,找包含网络请求模块的内容,跟着实操登录、列表加载等场景
REST API基础
- 研读《RESTful API设计指南》,重点理解HTTP请求方法的语义、状态码的含义、请求/响应头的作用
- 计算机网络课程中的HTTP协议部分,掌握协议的核心规则,这是理解API交互的基础
Flask后端开发
- Flask官方快速入门教程,从搭建第一个Hello World服务开始,逐步学习路由配置、请求参数解析、响应返回
- 技术社区的Flask实战文章,跟着实现用户登录、数据增删改查等常见API场景
内容的提问来源于stack exchange,提问作者Alef Gomes
相关产品推荐
相关产品推荐

