flutter:dio访问https地址时报错:CERTIFICATE_VERIFY_FAILED

一,报错信息

E/flutter (17543): [ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: DioException [unknown]: null
E/flutter (17543): Error: HandshakeException: Handshake error in client (OS Error: 
E/flutter (17543): 	CERTIFICATE_VERIFY_FAILED: unable to get local issuer certificate(handshake.cc:391))
E/flutter (17543): #0      DioMixin.fetch (package:dio/src/dio_mixin.dart:523:7)
E/flutter (17543): <asynchronous suspension>
E/flutter (17543): #1      _SaveGalleryPageState._saveNetworkImage (package:demo3/pages/SaveGalleryPage.dart:21:20)
E/flutter (17543): <asynchronous suspension>
E/flutter (17543): 
D/EGL_emulation(17543): eglMakeCurrent: 0xde0858a0: ver 3 0 (tinfo 0xc74f1100)

二,解决:

原代码:

  _saveNetworkImage(String imgUrl) async {
    var response = await Dio().get(imgUrl,
        options: Options(responseType: ResponseType.bytes));
    final result = await ImageGallerySaverPlus.saveImage(
        Uint8List.fromList(response.data),
        quality: 60,
        name: "hello");
    print(result);
  }

修改,使忽略证书错误

  _saveNetworkImage(String imgUrl) async {
    
    Dio dio = Dio();
    (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (client){
      client.badCertificateCallback=(cert, host, port){
        return true;
      };
    };

    var response = await dio.get(imgUrl,
        options: Options(responseType: ResponseType.bytes));
    final result = await ImageGallerySaverPlus.saveImage(
        Uint8List.fromList(response.data),
        quality: 60,
        name: "hello");
    print(result);
  }

备注:报下面的错误时:

MissingPluginException(No implementation found for method saveImageToGallery on channel image_gallery_saver_plus...

很简单,终止flutter应用的运行进程,重新run

posted @ 2025-04-04 13:12  刘宏缔的架构森林  阅读(399)  评论(0)    收藏  举报