HTTP-ответ во флаттере - PullRequest
       19

HTTP-ответ во флаттере

0 голосов
/ 01 ноября 2019

У меня проблема с флаттером. Я хочу получить HTTP-ответ от веб-сайта, но он не работает. Пример работает с другими сайтами, но не с нужным сайтом. Код:

Future initiate() async {
var client = Client();
Response response = await client.get(
‘https://www.phwt.de’
);

Я получаю эту ошибку:

E / флаттер (18017): [ОШИБКА: флаттер / lib / ui / ui_dart_state.cc (148)] Необработанное исключение: HandshakeException:Ошибка рукопожатия в клиенте (ошибка ОС: E / flutter (18017): CERTIFICATE_VERIFY_FAILED: невозможно получить сертификат локального эмитента (handshake.cc:352))

1 Ответ

0 голосов
/ 02 ноября 2019

Проблема возникает из-за того, что flutter не знает, кто подписал или выдал сертификат на www.phwt.de. Сертификат, кажется, был подписан SwissSign AG, чтобы он работал, у вас есть следующие опции:

  1. Установить соответствующий сертификат эмитента ( SwissSign ) в масштабе всей системы (это ОС). в частности).
  2. Либо добавьте вышеуказанные сертификаты или www.phwt.de сертификат в список доверенных сертификатов для флаттера / дротика (подробнее здесь и здесь ):
SecurityContext clientContext = new SecurityContext()
    ..setTrustedCertificates(file: 'my_trusted_certificates.pem');
var client = new HttpClient(context: clientContext);
var request = await client.getUrl(Uri.parse("https://www.phwt.de"));
var response = await request.close();
Доверяйте сертификату в самом коде, устанавливая обратный вызов на client.badCertificateCallback и проверяя, совпадает ли подпись (см. здесь ) То же, что 3, но вы ничего не проверяетеи просто верните true, фактически сделав любой сертификат в мире действительным (это потенциально опасно).
...