onRequest method
The callback will be executed before the request is initiated.
If you want to continue the request, call handler.next
.
If you want to complete the request with some custom data,
you can resolve a Response
object with handler.resolve
.
If you want to complete the request with an error message,
you can reject a DioError
object with handler.reject
.
Implementation
@override
void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
logPrint('****************** Request ******************');
_printKV('uri', options.uri);
_printKV('method', options.method);
_printKV('responseType', options.responseType.toString());
logPrint('headers:');
options.headers.forEach((key, v) => _printKV(' $key', v));
if ("GET" == options.method) {
logPrint('queryParameters:');
StringBuffer queryParameters = StringBuffer();
var queryParametersLength = options.queryParameters.keys.length;
for (int i = 0; i < options.queryParameters.keys.length; i++) {
var k = options.queryParameters.keys.elementAt(i);
var v = options.queryParameters.values.elementAt(i);
queryParameters.write(k);
queryParameters.write("=");
queryParameters.write(v);
if (i != queryParametersLength - 1) {
queryParameters.write("&");
}
}
logPrint(queryParameters);
} else if ("POST" == options.method) {
if (options.data != null) {
try {
if (options.data is FormData) {
var map = {};
for (var value in (options.data as FormData).fields) {
if (value.value is MultipartFile) {
map[value.key] = (value.value as MultipartFile).filename;
} else {
map[value.key] = value.value;
}
}
logPrint('requestBody:');
logPrint(json.encode(map));
}
} catch (e) {
print(e);
}
}
}
handler.next(options);
}