Я пытаюсь получить данные из веб-сокета, который требует авторизации на 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