Аутентификация веб-сокета в Dart - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь получить данные из веб-сокета, который требует авторизации на http://123.45.678.901: 8082 на этом сайте. Я получил данные в Интернете, используя javascript, отправив метод POST в http с текстом body (включая адрес электронной почты и пароль), а затем ответ => WebSocket.

Я также использовал websocket chrome extension , который работает, потому что я уже вошел на сервер. Так что в случае Javascript я отправляю учетные данные сервера, и он работает.

Но во флаттере я посылаю http-запрос, а затем использую websocket, но это другой класс. Так как же я могу аутентифицировать websocket (используя cook ie или сеанс или что-нибудь еще?).

Future<String> makeRequest() async {
  final response = await http.post("http://123.45.678.901:8082/api/session",
    body: {'email': 'abcd@gmail.com', 'password': 'abcd1234'});

  if (response.statusCode == 200) {
    final jsonResponse = json.decode(response.body);
    print(jsonResponse);
    //http request is working
  } else {
    print("failed printed");
    throw Exception('Failed to load data!');
  }

  channel = IOWebSocketChannel.connect('ws://123.45.678.901:8082/api/socket',
  headers: {'email': 'abcd@gmail.com', 'password': 'abcd1234'});

}
//Channel is not throwing any data.
stream: channel.stream,
   builder: (context, snapshot) {
   return Padding(
      padding: const EdgeInsets.symmetric(vertical: 24.0),
      child: Text(snapshot.hasData ? '${snapshot.data}' : 'No Data'),

);
}

печать ошибки Snapshot.error приведена ниже. Ошибка:
I / flutter (17234): WebSocketChannelException: WebSocketChannelException: WebSocketException: Соединение с 'http://123.45.678.901: 8082 # ' не было обновлено до websocket

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