相信你找到了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