123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- import 'package:common_utils/common_utils.dart';
- import 'package:dio/dio.dart';
- import 'package:flutter/material.dart';
- import 'package:liftmanager/utils/url.dart';
- /*
- * Http请求配置工具类
- */
- class NetUtils {
- static BuildContext context = null;
- BaseOptions _options;
- Dio dio;
- // 工厂模式
- factory NetUtils() => _getInstance();
- static NetUtils get instance => _getInstance();
- static NetUtils _instance;
- NetUtils._internal() {
- //初始化
- dio = getDio();
- }
- static NetUtils _getInstance() {
- LogUtil.init(isDebug: false,tag: "****NetUtils****");
- if (_instance == null) {
- _instance = new NetUtils._internal();
- }
- return _instance;
- }
- /**
- * 获取dio实例,不配置根url,完全使用传入的绝对路径url
- */
- Dio getDio({String url, BaseOptions options}) {
- if (options == null) {
- _options = new BaseOptions(
- baseUrl: baseUrl,
- connectTimeout: 1500000,
- receiveTimeout: 15000,
- contentType: "multipart/form-data",
- );
- } else {
- _options = options;
- }
- Dio _dio = new Dio(_options);
- // _dio.interceptors.add(new TokenInterceptor());//待完善
- // _dio.interceptors.add(new ErrorInterceptor(_dio));//待优化
- // _dio.interceptors.add(new HeaderInterceptor());
- // _dio.interceptors.add(new LogInterceptor());
- // setProxy(_dio);
- return _dio;
- }
- /**
- * 设置代理
- * */
- // void setProxy(Dio dio) {
- // //debug模式且为wifi网络时设置代理
- // if (Config.debug) {
- // //debug模式下设置代理
- // (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
- // (client) {
- // //设置代理
- // client.findProxy = (uri) {
- // return "PROXY " + UrlConstant.PROXY_URI;
- // };
- // };
- // }
- // }
- Future<Response> post(BuildContext context, url, {data, BaseOptions options,cancelToken}) async {
- LogUtil.v('启动post请求 url:$url ,body: $data');
- Response response;
- try {
- if (url != null &&
- (url.startsWith("http://") || url.startsWith("https://"))) {
- dio = getDio(url: url,options: options);
- }
- response = await dio.post(url, data: data, cancelToken: cancelToken);
- print('post请求成功 response.data:${response.statusCode.toString()}');
- return response;
- // LogUtil.v('post请求成功 response.data:${response.toString()}');
- } on DioError catch (e) {
- if (CancelToken.isCancel(e)) {
- LogUtil.v('post请求取消:' + e.message);
- }
- LogUtil.v('post请求发生错误:$e');
- }
- return response; //response.data.toString()这种方式不是标准json,不能使用
- }
- get(BuildContext context, url, {data,BaseOptions options,cancelToken}) async {
- LogUtil.v('启动get请求 url:$url ,body: $data');
- Response response;
- try {
- if (url != null &&
- (url.startsWith("http://") || url.startsWith("https://"))) {
- dio = getDio(url: url,options: options);
- }
- response =
- await dio.get(url, queryParameters: data, cancelToken: cancelToken);
- LogUtil.v('get请求成功 response.data:${response.toString()}');
- } on DioError catch (e) {
- if (CancelToken.isCancel(e)) {
- LogUtil.v('get请求取消:' + e.message);
- }
- LogUtil.v('get请求发生错误:$e');
- }
- return response;
- }
- }
|