Flutter发送OTP POST请求遇服务器错误,Postman可正常执行
解决Flutter发送OTP POST请求服务器错误问题
核心原因:缺少关键请求头
你的代码仅设置了Accept头,但使用json.encode发送JSON格式请求体时,必须告知服务器请求体的类型为JSON——Postman会自动添加Content-Type: application/json头,这就是为什么Postman能正常执行,而Flutter请求报错的关键差异。
修改后的代码
Future<dynamic> otp( {required String url, required int otp, required String email}) async { try { print(json.encode({"otp": otp, "email": email})); var response = await http.post( Uri.parse(_baseURL + url), headers: { "Accept": "application/json", "Content-Type": "application/json" // 新增该请求头 }, body: json.encode({"otp": otp, "email": email}), ); print(response.body); if (response.statusCode == 200) { return OtpData.fromJson(json.decode(response.body)); } else { print(response.statusCode); return OtpData(otp: 0000, email: email); } } catch (ex) { rethrow; } }
额外排查方向
- 确认
_baseURL + url拼接后的完整地址和Postman中的请求地址完全一致,避免路径拼写、域名差异问题 - 查看
response.body返回的具体错误信息,若仍报错,可根据错误内容进一步排查(比如参数格式是否与服务器要求完全匹配)
内容的提问来源于stack exchange,提问作者Abdel-elah Shorbaji
相关产品推荐
相关产品推荐

