Quickblox Flutter自定义对象更新失败 Rest API返回资源不存在
QuickBlox 自定义对象更新问题排查方案
Flutter SDK 无响应问题排查
- 先升级QuickBlox Flutter SDK到最新官方稳定版,旧版本存在
update方法异常未正确抛出、无返回值的已知问题,升级后再复测。 - 补充异常捕获逻辑,你当前的代码仅捕获了
PlatformException类型异常,网络错误、权限错误、参数错误等其他异常不会进入该捕获分支,会被静默忽略,你以为代码无响应实际是异常未被捕获,可按如下代码补充通用捕获:
try { QBCustomObject? customObject = await QB.data.update(className, id: id, fields: fieldsMap); // 补充正常返回的日志打印,确认是否真的无返回 print("更新结果:${customObject?.toString()}"); } on PlatformException catch (e) { print("平台异常:${e.toString()}"); } catch (e) { print("其他异常:${e.toString()}"); }
- 确认
className、id参数和后台配置完全一致,QuickBlox自定义对象类名、记录ID均为大小写敏感,拼写或大小写不符也会导致无返回结果。
REST API 返回 Resource not found 问题排查
- 首先修正请求方法:QuickBlox 更新自定义对象的接口要求使用PUT请求,你当前用的
postUrl是POST方法,属于新增记录的请求方式,访问更新路径自然会返回404,将httpClient.postUrl(Uri.parse(url))改为httpClient.putUrl(Uri.parse(url))即可解决该核心问题。 - 校验
QB-token有效性:token过期、不属于当前应用都会触发404错误,可先用同一token调用查询GAMES类全量记录的接口,确认能正常拿到数据,排除token问题。 - 确认路径中的类名
GAMES大小写和后台完全一致,API路径对类名大小写敏感,后台如果是Games、games都会导致资源找不到。 - 确认记录ID
61794c291558ea0059ce2c90属于当前token绑定的应用,跨应用访问记录也会返回404。
内容的提问来源于stack exchange,提问作者vin shaba
相关产品推荐
相关产品推荐

