dio_interceptors.dart 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import 'dart:convert';
  2. import 'package:dio/dio.dart';
  3. import 'package:fun_selfie_app/utils/storage.dart';
  4. import 'package:crypto/crypto.dart';
  5. import 'package:fun_selfie_app/utils/common_toast.dart';
  6. class DioInterceptors extends Interceptor {
  7. @override
  8. void onRequest(
  9. RequestOptions options, RequestInterceptorHandler handler) async {
  10. // 对非open的接口的请求参数全部增加userId
  11. // if (!options.path.contains("open")) {
  12. // options.queryParameters["userId"] = "xxx";
  13. // }
  14. // 头部添加token
  15. // options.headers["token"] = "xxx";
  16. String userMsg = await StorageUtil.getString('userMsg');
  17. if (userMsg.isEmpty) return;
  18. Map userMsgObj = jsonDecode(userMsg);
  19. String? appId = userMsgObj['configName'];
  20. String? secret = userMsgObj['configPass'];
  21. // String? website = 'http://118.123.247.197:8080/jeecg-boot/';
  22. var ts = DateTime.now().millisecondsSinceEpoch.toString();
  23. var token = md5
  24. .convert(utf8.encode(appId.toString() + secret.toString() + ts))
  25. .toString();
  26. options.headers['X-APPID'] = appId;
  27. options.headers['X-SECRET-TOKEN'] = token;
  28. options.headers['ts'] = ts;
  29. // options.baseUrl = website.toString();
  30. // 更多业务需求
  31. handler.next(options);
  32. // super.onRequest(options, handler);
  33. }
  34. @override
  35. void onResponse(Response response, ResponseInterceptorHandler handler) async {
  36. // 请求成功是对数据做基本处理
  37. if (response.statusCode == 200) {
  38. response.data = response.data['result'];
  39. } else {
  40. CommonToast.errToast(
  41. '出错了,'.toString() + response.statusMessage.toString());
  42. }
  43. // 对某些单独的url返回数据做特殊处理
  44. if (response.requestOptions.baseUrl.contains("???????")) {
  45. //....
  46. }
  47. // 重点
  48. handler.next(response);
  49. }
  50. @override
  51. void onError(DioException err, ErrorInterceptorHandler handler) {
  52. String? data = err.response?.data;
  53. if (data != null) {
  54. Map dataObj = jsonDecode(data);
  55. CommonToast.errToast('出错了,'.toString() + dataObj['message']);
  56. } else {
  57. Object? error = err.error;
  58. CommonToast.errToast('网络出错了,${error.toString()}');
  59. }
  60. super.onError(err, handler);
  61. }
  62. }