最近Flutter項(xiàng)目中訪問(wèn)https,總是報(bào)錯(cuò)如下:

這是https證書問(wèn)題,但一直沒找到Flutter中的解決方案。所以在這里給出完整的忽略證書的基于第三方http框架的拿來(lái)就用的Flutter項(xiàng)目網(wǎng)絡(luò)框架HttpUtils:
import 'package:http/http.dart' as http;
import 'dart:io';
import 'package:http/io_client.dart';
class HttpUtils {
static void get(String url, Function callback,
? ? ? {Map params, Function errorCallback})async {
if (params !=null && params.isNotEmpty) {
StringBuffer sb =new StringBuffer("?");
? ? ? params.forEach((key, value) {
sb.write("$key" +"=" +"$value" +"&");
? ? ? });
? ? ? String paramStr = sb.toString();
? ? ? paramStr = paramStr.substring(0, paramStr.length -1);
? ? ? url += paramStr;
? ? }
try {
var client =ignoreCertificateClient();
? ? ? http.Response res =await client.get(url);
? ? ? if (callback !=null) {
callback(res.body);
? ? ? }
}catch (exception) {
if (errorCallback !=null) {
errorCallback(exception);
? ? ? }
}
}
static void post(String url, Function callback,
? ? ? {Map params, Function errorCallback})async {
try {
var client =ignoreCertificateClient();
? ? ? http.Response res =await client.post(url, body: params);
? ? ? if (callback !=null) {
callback(res.body);
? ? ? }
}catch (e) {
if (errorCallback !=null) {
errorCallback(e);
? ? ? }
}
}
static bool_certificateCheck(X509Certificate cert, String host, int port) =>true;
? static IOClientignoreCertificateClient() {
var ioClient =new HttpClient()
..badCertificateCallback =_certificateCheck;
? ? return new IOClient(ioClient);
? }
}
使用方法一句代碼搞定:
HttpUtils.get('XXXXXXXXXXXXXXX.COM',(data){
if(data !=null){
final body = convert.jsonDecode(data.toString());
? ? logger.e(body.toString());
? }
});