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
浙公网安备 33010602011771号