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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM