HTTP PUT请求报415 Unsupported Media Type错误排查求助
Flutter PUT请求更新用户资料返回415 Unsupported Media Type 解决方案
415错误的核心原因是请求未指定Content-Type: application/json请求头——虽然你用jsonEncode()把数据转成了JSON字符串,但服务器无法识别请求体的格式,所以返回“不支持的媒体类型”错误。
修复方法
在PUT请求的headers中添加Content-Type字段,明确告诉服务器请求体是JSON格式:
Future<bool> updateProfile(UpdateProfileModel data, String token) async { Map<String, dynamic> profData = { "nickname": data.nickname, "firstname": data.firstname, "lastname": data.lastname, "middlename": data.middlename, "aboutMe": data.aboutMe, "dateOfBirth": data.dateOfBirth, "showDateOfBirth": data.showDateOfBirth, "gender": data.gender, "regionId": data.regionId, "telegram": data.telegram, "instagram": data.instagram, "facebook": data.facebook, "linkedin": data.linkedin, "picture": data.picture }; try { String tok = 'Bearer $token'; Response response = await put( Uri.parse(AppUrl.updateProfile), body: jsonEncode(profData), // 新增Content-Type请求头 headers: { 'Authorization': tok, 'Content-Type': 'application/json' }, ); print(token); print(jsonEncode(profData)); print(response.statusCode); if (response.statusCode == 200) { final Map<String, dynamic> responseData = json.decode(response.body); print(response.body); return responseData['succeeded']; } else { return false; } } catch (e) { return false; } }
额外验证
你提供的请求体JSON格式是合法的,无需修改:
{"nickname":"john","firstname":"Zhan","lastname":"Tuleu","middlename":null,"aboutMe":"strinasdasdasd","dateOfBirth":"2022-07-21T21:50:52.753","showDateOfBirth":true,"gender":1,"regionId":1,"telegram":"string","instagram":"string","facebook":"string","linkedin":"string","picture":null}
如果添加Content-Type后仍有问题,可以进一步检查dateOfBirth的格式是否完全匹配服务器的要求,但当前415错误的直接诱因就是缺少该请求头。
内容的提问来源于stack exchange,提问作者Zhandaulet Zhaxylykuly
相关产品推荐
相关产品推荐

