СБОЙ | проблема связи с использованием HTTP

#android-studio #http #flutter

#android-studio #http #флаттер

Вопрос:

До недавнего времени я работал над эмулятором, и все было в порядке. Теперь, когда я установил приложение на свой Android, у меня появилось сообщение об ошибке. Я использую пакет http.

На странице входа в систему отправляется запрос на вход. Переменная электронной почты и переменная пароля. Он был отправлен в запросе HTTP-пакета. Он поступает на сервер для тестирования и возврата результата. Если он положительный, он подключается к следующей странице. Если нет, он остается на той же странице.

До сих пор это работало чудесно. Внезапно это не работает, почему?

Консоль:

 E/flutter ( 5005): [ERROR:flutter/lib/ui/ui_dart_state.cc(171)] Unhandled Exception: SocketException: Insecure socket connections are disallowed by platform: almog.*******.com
E/flutter ( 5005): #0      Socket.startConnect (dart:io/socket.dart:823:9)
E/flutter ( 5005): #1      _ConnectionTarget.connect (dart:_http/http_impl.dart:2196:18)
E/flutter ( 5005): #2      _HttpClient._getConnection.connect (dart:_http/http_impl.dart:2547:12)
E/flutter ( 5005): #3      _HttpClient._getConnection (dart:_http/http_impl.dart:2552:19)
E/flutter ( 5005): #4      _HttpClient._openUrl (dart:_http/http_impl.dart:2438:12)
E/flutter ( 5005): #5      _HttpClient.openUrl (dart:_http/http_impl.dart:2323:7)
E/flutter ( 5005): #6      IOClient.send (package:http/src/io_client.dart:31:37)
E/flutter ( 5005): #7      BaseClient._sendUnstreamed (package:http/src/base_client.dart:91:38)
E/flutter ( 5005): #8      BaseClient.post (package:http/src/base_client.dart:32:7)
E/flutter ( 5005): #9      post.<anonymous closure> (package:http/http.dart:70:16)
E/flutter ( 5005): #10     _withClient (package:http/http.dart:166:20)
E/flutter ( 5005): #11     post (package:http/http.dart:69:5)
E/flutter ( 5005): #12     _LoginPageState.signIn (package:kibuiramon/service/service_log.dart:103:26)
E/flutter ( 5005): <asynchronous suspension>
E/flutter ( 5005): #13     _LoginPageState.showPrimaryButton.<anonymous closure> (package:kibuiramon/service/service_log.dart:346:15)
E/flutter ( 5005): #14     _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:993:19)
E/flutter ( 5005): #15     _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:1111:38)
E/flutter ( 5005): #16     GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:183:24)
E/flutter ( 5005): #17     TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:598:11)
E/flutter ( 5005): #18     BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:287:5)
E/flutter ( 5005): #19     BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:259:7)
E/flutter ( 5005): #20     GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:157:27)
E/flutter ( 5005): #21     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:362:20)
E/flutter ( 5005): #22     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:338:22)
E/flutter ( 5005): #23     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:267:11)
E/flutter ( 5005): #24     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:295:7)
E/flutter ( 5005): #25     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:240:7)
E/flutter ( 5005): #26     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:213:7)
E/flutter ( 5005): #27     _rootRunUnary (dart:async/zone.dart:1206:13)
E/flutter ( 5005): #28     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
E/flutter ( 5005): #29     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
E/flutter ( 5005): #30     _invoke1 (dart:ui/hooks.dart:265:10)
E/flutter ( 5005): #31     _dispatchPointerDataPacket (dart:ui/hooks.dart:174:5)
E/flutter ( 5005): 
  

Разрешение в манифесте:

 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="READ_PRIVILEGED_PHONE_STATE"/>
<uses-permission android:name="REQUEST_PHONE_CALL" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  

Функция входа :

 signIn(String email, pass) async {
    var prefs = await SharedPreferences.getInstance();

    print(email pass);
    Map data = {'email': email, 'password': pass , };
    var response = await http.post("http://************.com?do=check_user",body: data);
    if (response.statusCode == 200) {
      List<dynamic> jsonResponse = json.decode(response.body);


      if (jsonResponse[0]['error'] == 'true')
      {
        ErrorConnect = true;
        setState(() {
          _isLoading = false;
        });


      }else{ErrorConnect = false;}
      if(ErrorConnect == false) {
        id = jsonResponse[0]['id'];
        log = jsonResponse[0]['log_in'];
        banned = jsonResponse[0]['banned'];
        prefs.setString("id", id);
        prefs.setString("log_in", log);
        prefs.setString("banned", banned);
        prefs.setString('email', jsonResponse[0]['email']);
        if (banned == '1') {
          Navigator.of(context).pushAndRemoveUntil(
              MaterialPageRoute(builder: (BuildContext context) => NotFound()),
                  (Route<dynamic> route) => false);
        } else {
          Navigator.of(context).pushAndRemoveUntil(
              MaterialPageRoute(builder: (BuildContext context) => RoutePage()),
                  (Route<dynamic> route) => false);
        }
      } else {
      setState(() {
        _isLoading = false;
      });

    }
  }
    }
  

Редактировать

Теперь это работает! Мне нужно было преобразовать URL-адрес из http в https.

Комментарии:

1. В основном это из-за отсутствия подключения к Интернету. Вы проверили подключение?

2. Я обнаружил проблему, мне нужно преобразовать http в https

Ответ №1:

просто.. вам нужно преобразовать http: в https:, это будет работать как шарм..

Ответ №2:

Если вы не можете преобразовать http в https, вы можете включить cleartextTraffic.

Android:

Создайте файл res/xml/network_security_config.xml

 <?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">your-http-domain.com</domain>
    </domain-config>
</network-security-config>
  

После этого добавьте это в свой AndroidManifest:

 </application>
    ...
    <meta-data android:name="io.flutter.network-policy"
        android:resource="@xml/network_security_config"/>
</application>