verify response data

This commit is contained in:
wgh19
2024-06-29 19:15:58 +08:00
parent 0143a67fa0
commit b1e7adb1c5

View File

@@ -1,3 +1,4 @@
import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
@@ -109,12 +110,53 @@ class AppDio extends DioForNative {
CancelToken? cancelToken, CancelToken? cancelToken,
Options? options, Options? options,
ProgressCallback? onSendProgress, ProgressCallback? onSendProgress,
ProgressCallback? onReceiveProgress}) { ProgressCallback? onReceiveProgress}) async{
if (!isInitialized) { if (!isInitialized) {
isInitialized = true; isInitialized = true;
interceptors.add(MyLogInterceptor()); interceptors.add(MyLogInterceptor());
} }
return super.request(path, if(T == Map<String, dynamic>) {
var res = await super.request<String>(path,
data: data,
queryParameters: queryParameters,
cancelToken: cancelToken,
options: options,
onSendProgress: onSendProgress,
onReceiveProgress: onReceiveProgress);
if(res.data == null) {
return Response(
data: null,
requestOptions: res.requestOptions,
statusCode: res.statusCode,
statusMessage: res.statusMessage,
isRedirect: res.isRedirect,
redirects: res.redirects,
extra: res.extra,
headers: res.headers
);
}
try {
var json = jsonDecode(res.data!);
return Response(
data: json,
requestOptions: res.requestOptions,
statusCode: res.statusCode,
statusMessage: res.statusMessage,
isRedirect: res.isRedirect,
redirects: res.redirects,
extra: res.extra,
headers: res.headers
);
}
catch(e) {
var data = res.data!;
if(data.length > 50) {
data = "${data.substring(0, 50)}...";
}
throw "Failed to decode response: $e\n$data";
}
}
return super.request<T>(path,
data: data, data: data,
queryParameters: queryParameters, queryParameters: queryParameters,
cancelToken: cancelToken, cancelToken: cancelToken,