postJson static method
Future
postJson(
- String url, {
- Map<String, dynamic>? params,
- dynamic data,
- Options? options,
- CancelToken? cancelToken,
- bool isNeedAllData = false,
- 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
}
}