未处理的异常:HandshakeException:客户端中的握手错误(操作系统错误:CERTIFICATE_VERIFY_FAILED:证书已过期(handshake.cc:393))

Kar*_*ski 2 ssl post android dart flutter

我在旧版本的 Android - 5.1 上启动我的应用程序,但收到此错误:

Unhandled Exception: HandshakeException: Handshake error in client (OS Error: CERTIFICATE_VERIFY_FAILED: certificate has expired(handshake.cc:393))
Run Code Online (Sandbox Code Playgroud)

在较新的 Android(如 10)上,此情况不会出现。我正在向后端发出 POST 请求,如何修复它?

我找到了解决方案:在此处输入链接描述

小智 7

试试这个

   class MyHttpOverrides extends HttpOverrides{
  @override
  HttpClient createHttpClient(SecurityContext context){
    return super.createHttpClient(context)
      ..badCertificateCallback = (X509Certificate cert, String host, int port)=> true;
  }
}

void main(){
  HttpOverrides.global = new MyHttpOverrides();
  runApp(MyApp());
}
Run Code Online (Sandbox Code Playgroud)

我不确定 flutter web,但它可能有助于 flutter ios 和 android。

  • 我正在使用建议的解决方案,但收到此错误:“MyHttpOverrides.createHttpClient' ('HttpClient Function(SecurityContext)') 不是 'HttpOverrides.createHttpClient' ('HttpClient Function(SecurityContext?)') 的有效覆盖”。通过 --> 将 SecurityContext 更改为 SecurityContext? 解决了这个问题。 (2认同)