Quickblox颤振自定义对象更新不起作用

Posted

技术标签:

【中文标题】Quickblox颤振自定义对象更新不起作用【英文标题】:Quickblox flutter custom objects update not working 【发布时间】:2021-10-30 18:34:37 【问题描述】:

根据 Quickblox 文档here,可以使用此示例从 Flutter SDK 更新自定义对象:

String className = "TestFlutterClass";

String id = "5d4175afa0eb4715cae5b63f";
    
Map<String, Object> fieldsMap = Map();
fieldsMap['testString'] = "testField1";
fieldsMap['testInteger'] = 123;
fieldsMap['testBoolean'] = true;

try 
  QBCustomObject? customObject = await QB.data.update(className, id: id, fields: fieldsMap);
 on PlatformException catch (e) 
  // Some error occurred, look at the exception message for more details

上面的这段代码似乎没有工作或返回任何东西。

我还尝试通过使用以下代码将 HTTP 发布到 Rest API 来更新自定义对象

String url = "https://api.quickblox.com/data/GAMES/61794c291558ea0059ce2c90.json";
         
Map map = 'data':  'PLAYERS_STATUS': sts,;

await apiRequest(url, map);

Future<String>  apiRequest(String url, Map jsonMap) async 
    HttpClient httpClient = new HttpClient();
    HttpClientRequest request = await httpClient.postUrl(Uri.parse(url));
    request.headers.set('content-type', 'application/json');
    request.headers.set('QB-token', session);
    request.add(utf8.encode(json.encode(jsonMap)));
    HttpClientResponse response = await request.close();
    // todo - you should check the response.statusCode
    String reply = await response.transform(utf8.decoder).join();
    httpClient.close();
    return reply;

此代码返回错误消息

找不到资源

现在我知道该记录存在,因为我可以在仪表板上看到该记录并且所有班级权限都已打开。

欢迎任何帮助!

【问题讨论】:

【参考方案1】:

在用于更新记录的服务器 API 中,您需要使用 PUT 请求方法。我可以看到你发送了 POST 请求。 尝试使用 PUT 请求方法而不是 POST https://api.flutter.dev/flutter/dart-io/HttpClient/putUrl.html

【讨论】:

我正在使用 dio 在服务器上进行编辑,但 put 不适用于图片上传。这是来自您的网站docs.quickblox.com/reference/upload-update-file 的教程。这显然使用 post not put

以上是关于Quickblox颤振自定义对象更新不起作用的主要内容,如果未能解决你的问题,请参考以下文章

QuickBlox 自定义对象权限

Quickblox:使用自定义对象登录 (Android)

Quickblox 内容与自定义对象文件

Quickblox 自定义对象数组的 NSPredicate

Quickblox:是不是可以删除用户创建的所有自定义对象

Quickblox:自定义对象中的数组未正确下载