trycatch DioError的时候控制台会输出一些错误内容
来源:3-7 扩展hi_net添加对dio的支持

拾年磨一剑
2021-04-13
/// Dio适配器
class DioAdapter extends HiNetAdapter {
@override
Future<HiNetResponse<T>> send<T>(BaseRequest request) async {
var response, options = Options(headers: request.header);
var error;
try {
if (request.httpMethod() == HttpMethod.GET) {
response = await Dio().get(request.url(), options: options);
} else if (request.httpMethod() == HttpMethod.POST) {
response = await Dio()
.post(request.url(), data: request.params, options: options);
} else if (request.httpMethod() == HttpMethod.PUT) {
response = await Dio()
.put(request.url(), data: request.params, options: options);
} else if (request.httpMethod() == HttpMethod.DELETE) {
response = await Dio()
.delete(request.url(), data: request.params, options: options);
}
} on DioError catch (e) {
error = e;
response = e.response;
}
if (error != null) {
throw HiNetError(response?.statusCode ?? -1, error.toString(),
data: buildRes(response, request));
}
return buildRes(response, request);
}
/// 构建HiNetResponse
HiNetResponse buildRes(response, BaseRequest request) {
return HiNetResponse(
data: response.data,
request: request,
statusCode: response.statusCode,
statusMessage: response.statusMessage,
extra: response);
}
}
Future<dynamic> send<T>(BaseRequest request) async {
/// 使用Dio发送请求
HiNetAdapter adapter = DioAdapter();
return adapter.send(request);
}
多出一部分错误信息,且没办法捕捉到,dio版本是:dio: ^4.0.0
写回答
1回答
-
CrazyCodeBoy
2021-04-14
错误已经被DioAdapter中的
} on DioError catch (e) { error = e; response = e.response; }
捕获了,然后被HiNet的 printLog(e);打印出来了。
00
相似问题