flutter dio 模块https证书异常,忽略证书错误:CERTIFICATE_VERIFY_FAILED: certificate has expired(handshake.cc:354))

相信你找到了HttpClient或http模块解决证书错误的方法,但唯独没找到Dio模块的解决方法,可能比较聪明的小伙伴已经根据Dio的文档已经找到解决办法了。

下面我先列出HttpClient和http模块和Dio模块的解决方法再来看我们Dio怎么解决证书的问题。

1)、HttpClient:

其请求代码如下:

HttpClient client = HttpClient();
var request = await client.getUrl(Uri.parse("https://wxpay.wxutil.com/pub_v2/app/app_pay.php"));

这个原因就是证书不被信任。为了解决这个问题需要强行信任:

client.badCertificateCallback = callback(X509Certificate cert, String host, int port){
   return true;
}

 2)、http模块:

有的同学可能用的是http包,如果同样遇到这个问题可以通过如下的方式解决:

 
import 'dart:io';
 
import 'package:http/http.dart' as http;
 
 
 
bool _certificateCheck(X509Certificate cert, String host, int port) =>
 
host == 'devblog.paypal.com';
 
 
 
http.Client paypalClient() {
 
var ioClient = new HttpClient()
 
..badCertificateCallback = _certificateCheck;
 
 
 
return new http.IOClient(ioClient);
 
}

为其设置一个IOClient就可以解决问题了。
怎么样,问题解决了吗?

3)、dio模块:

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

dio模块的解决办法其实跟上面的httpClient类似。

dio文档上有提到证书验证的问题,我们拿来改一下即可

4)、以下是dio文档内容

 

 

 

 

httpclient和http模块的解决办法转载:https://blog.csdn.net/weixin_34221112/article/details/89664673

 

posted @ 2020-10-02 14:20  Jarming  阅读(6737)  评论(0编辑  收藏  举报