Флаттер отправляет json на сервер websocket в байтах? - PullRequest
0 голосов
/ 22 мая 2018

У меня есть сообщение в формате 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. Если текст или неверный формат json, он откажется от соединения

Вот что я делаю:

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

канал - это просто 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 and Flutter?Я не совсем знаком с операцией байтов Dart.

1 Ответ

0 голосов
/ 22 мая 2018

Вы можете получить строку JSON в Dart

import 'dart:convert';

...

var jsonString = json.encode(data);

и получить байты строки, используя

var bytes = jsonString.codeUnits; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...