_connectForSelfSignedCert, выдающий несанкционированную ошибку - PullRequest
0 голосов
/ 12 марта 2020

У меня следующий код, я не могу понять, почему я получаю 401 в ответ. Я использую webrt c для совершения видеозвонков. Я получаю 401 в качестве кода ответа. Я скачал репозиторий github и изменил URL и имя порта.

    Future<WebSocket> _connectForSelfSignedCert(String host,int port,String url) async {
    try {
      Random r = new Random();
      String key = base64.encode(List<int>.generate(8, (_) => r.nextInt(255)));
      SecurityContext securityContext = new SecurityContext();
      HttpClient client = HttpClient(context: securityContext);
      client.badCertificateCallback =
          (X509Certificate cert, String host, int port) {
        print('Allow self-signed certificate => $host:$port');
        return true;
      };
      var params=url.substring(34);
      debugPrint(params);
      HttpClientRequest request = await client.getUrl(
          Uri.parse('https://$host:$port?$params'));
      debugPrint("Request"+request.toString());// form the correct url here
      request.headers.add('Connection', 'Upgrade');
      request.headers.add('Upgrade', 'websocket');
      request.headers.add('Sec-WebSocket-Version', '13'); // insert the correct version here
      request.headers.add('Sec-WebSocket-Key', key.toLowerCase());
      HttpClientResponse response = await request.close();
      debugPrint("detachSocket Url"+response.toString());
      debugPrint("detachSocket Url"+response.statusCode.toString());
      if(response.statusCode==200)
        {
          debugPrint(response.toString());
        }
      Socket socket = await response.detachSocket();
      var webSocket = WebSocket.fromUpgradedSocket(
        socket,
        protocol: 'signaling',
        serverSide: false,
      );
      socket.close();
      return webSocket;

    } catch (e) {
      throw e;
    }
  }
...