【问题标题】:Flutter send json to websocket server as bytes?Flutter 将 json 作为字节发送到 websocket 服务器?
【发布时间】:2018-10-31 23:50:34
【问题描述】:

我有一个类似 JSON 的消息:

  static getHiMsg(String token, String sender) {
   var msg = {
        "token": token,
        "user_addr": sender,
        "ua": "dart/fluter-v0.0.1",
        "device": "Phone",
        "location": "Hunan"
    };
    var outMsg = {
        "msg_type": "hi",
        "payload": msg
    };
    return outMsg;
  }

我想将此消息发送到只处理json请求的websocket服务器,如果是纯文本或错误格式的json,它将拒绝连接。

这是在做什么:

  void _sayHi() async {
    _token = await _prefs.getToken();
    _userAddr = await _prefs.getUserAddr();
    var hi = getHiMsg(_token, _userAddr);
      print(hi);
      channel.sink.add(hi);
  }

channel 只是IOWebSocketChannel.connect(wsUrl) 这里我的服务器无法获取正确的 JSON 格式请求,实际上这是 Python 中的正确逻辑:

def hi_msg(token, addr):
# change this to one account token and user_addr
msg = {
    "token": token,
    "user_addr": addr,
    "ua": "py/macos",
    "device": "mac",
    "location": "Hunan"
}
out_msg = {
    "msg_type": "hi",
    "payload": msg
}
msg_str = json.dumps(out_msg)
b = bytes(msg_str, 'utf-8')
return b

如何在 Dart 和 Flutter 中实现这一点?我对 Dart 字节操作不太熟悉。

【问题讨论】:

  • 哪里出了问题?
  • @GünterZöchbauer 我只是想知道如何将 json 编码为字节并发送到我的 websocket 服务器,就像 Python 代码中的相同操作一样。

标签: json request dart flutter


【解决方案1】:

你可以在 Dart 中得到一个 JSON 字符串

import 'dart:convert';

...

var jsonString = json.encode(data);

并使用获取字符串的字节数

var bytes = jsonString.codeUnits; 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多