Flutter发送Multipart POST请求更新店铺信息失败问题求助
问题排查方向
1. 参数不符合接口要求
- 你代码中
store_live_chat_enable传的是空字符串,但接口明确要求可选值为yes/no,字段校验不通过会直接导致更新被后端拦截 - Banner文件参数名不匹配:接口要求Banner的文件参数为
Thumb,你代码中传的是banner_thumb,参数名错误导致图片资源上传失败,可能触发后端更新拦截逻辑 - 大量可选/必填字段传空字符串:包括
store_status、store_tin、store_bank_details等,如果后端要求这些字段不能为空白,会直接拒绝更新请求 store_logo、store_banner字段传空字符串:如果这两个字段需要对应上传文件的存储路径,传空会被后端判定为参数非法
2. 未读取接口业务响应
HTTP状态码200仅代表请求链路通了,不代表业务执行成功。你当前只判断了状态码,没有读取接口返回的业务错误信息,无法知道具体失败原因。请添加代码解析响应体:
var res = await request.send(); // 新增以下代码读取响应内容 var responseBody = await res.stream.bytesToString(); print("接口业务返回内容:$responseBody");
打印后即可看到接口返回的具体错误提示,比如参数错误、权限不足等。
3. 缺少必要的鉴权请求头
拉取店铺详情的GET请求通常不需要复杂鉴权,但更新类POST请求一般需要携带鉴权信息,比如Authorization token、Cookie等。你当前的请求没有配置任何自定义请求头,后端可能因无权限直接忽略更新操作,仅返回200状态码。请补充你调用详情接口时携带的请求头到当前请求中,示例:
request.headers['Authorization'] = 'Bearer 你的登录token'; request.headers['Content-Type'] = 'multipart/form-data';
4. HTTP请求方法不匹配
很多RESTful规范的更新接口要求使用PUT方法而非POST,请确认接口文档要求的请求方法,如果是PUT请修改请求初始化代码:
var request = http.MultipartRequest('PUT', Uri.parse(url));
内容的提问来源于stack exchange,提问作者Arpit Jai
相关产品推荐
相关产品推荐

