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