init method

dynamic init(
  1. HttpDioConfig config
)

初始化公共属性

Implementation

init(HttpDioConfig config) {
  VFTextDelegateHelper.getErrorMsg();
  httpDioConfig = config;
  dio.options = dio.options.copyWith(
    baseUrl: config.baseUrl.toString(),
    connectTimeout:Duration(milliseconds: config.connectTimeout) ,
    receiveTimeout: Duration(milliseconds: config.receiveTimeout),
    headers: config.headers ?? const {},
  );

  List<Interceptor>? interceptors = config.interceptors;
  // 在初始化http类的时候,可以传入拦截器
  if (interceptors != null && interceptors.isNotEmpty) {
    dio.interceptors.addAll(interceptors);
  }

  // dio内部仍然使用HttpClient发起的请求,所以代理、请求认证、证书校验等和HttpClient是相同的,我们可以在onHttpClientCreate回调中设置

  // (dio.httpClientAdapter as IOHttpClientAdapter).onHttpClientCreate = (client) {
  //   //校验证书   这一段是解决安卓https抓包的问题
  //   client.badCertificateCallback = (X509Certificate cert, String host, int port) {
  //     return Platform.isAndroid;
  //   };
  //
  //   if (config.isNeedProxy) {
  //     Log.i("====================设置代理=============${config.proxyHost}");
  //
  //     client.findProxy = (uri) {
  //       return config.proxyHost;
  //     };
  //   }
  //   return client;
  // };


  dio.httpClientAdapter = IOHttpClientAdapter(
    createHttpClient: () {
      final client = HttpClient();
      client.badCertificateCallback = (X509Certificate cert, String host, int port) {
        return Platform.isAndroid;
      };

      if (config.isNeedProxy) {
        VLog.i("====================设置代理=============${config.proxyHost}");

        client.findProxy = (uri) {
          return config.proxyHost;
        };
      }

      return client;
    },
  );


}