postJson static method

Future postJson(
  1. String url, {
  2. Map<String, dynamic>? params,
  3. dynamic data,
  4. Options? options,
  5. CancelToken? cancelToken,
  6. bool isNeedAllData = false,
  7. Function? sendProcessFunc,
})

Implementation

static Future postJson(String url,
    {Map<String, dynamic>? params, dynamic data, Options? options, CancelToken? cancelToken, bool isNeedAllData = false, Function? sendProcessFunc}) async {
  printWithSystemMethod("请求的地址是$url<===>超时时长设置的是${Http().httpDioConfig.connectTimeout}");

  Options requestOptions = options ?? Options();
  Map<String, dynamic>? headers = requestOptions.headers;
  //这个跟上传图片那里是一样的,dio自己回根据传参设置content-type,但因为有时可能直接传数组,它推断的content-type并不对,导致会报如下错误:
  // List<dynamic> cannot be used to imply a default content-type, please set a proper content-type in the request.
  if (headers != null) {
    headers['Content-Type'] = 'application/json;charset=UTF-8'; // 设置正确的 Content-Type
  } else {
    requestOptions.headers = {'Content-Type': 'application/json;charset=UTF-8'};
  }


  Response? response;

  try {
    printWithSystemMethod("========能不能拦截住===method=try=1=========");
    response = await Http().dio.post(url, data: data,
        queryParameters: params,
        options: requestOptions,
        cancelToken: cancelToken ?? _cancelToken,
        onSendProgress: (int sent, int total) {
          if (sendProcessFunc != null) {
            sendProcessFunc(sent, total);
          }
        });
    printWithSystemMethod("========能不能拦截住===method=try=2=========");

    return _handleResponse2Page(response, needAllData: isNeedAllData);
  } catch (e) {
    printWithSystemMethod("========能不能拦截住===method==4=====拦截器已经转换==$e==");
    if (e is DioException) {
      return e.error;
    }
    return e; //appException
  }
}