httpPost function
The default http POST that support Logging
Implementation
Future<http.Response> httpPost(
Uri uri, {
Map<String, String>? headers,
Object? body,
bool enableDio = false,
}) async {
final startTime = DateTime.now();
initProxyClient(MultiSite.mainSiteUrl ?? uri);
var url = HttpClientSetting.settingProxy(uri);
if (enableDio) {
try {
final res = await Dio().post(url.toString(),
options: Options(headers: headers, responseType: ResponseType.plain),
data: body);
printLog('🔼 POST:$url', startTime);
final headersRes = <String, String>{};
res.headers.forEach((name, values) {
headersRes.addAll({name: values.join()});
});
final response = http.Response(
res.toString(),
res.statusCode!,
headers: headersRes,
);
return response;
} on DioException catch (e) {
if (e.response != null) {
final response =
http.Response(e.response.toString(), e.response!.statusCode!);
return response;
} else {
// ignore: only_throw_errors
throw e.message ?? 'error';
}
}
} else {
var response =
await _makeRequest(http.post(url, headers: headers, body: body));
printLog('🔼 POST:$url', startTime);
return response;
}
}