request.dart 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import 'package:dio/dio.dart';
  2. import 'config.dart'; //用于配置公用常量
  3. class Http {
  4. static Http instance;
  5. static String token;
  6. static Config _config = Config();
  7. static Dio _dio;
  8. BaseOptions _options;
  9. static Http getInstance() {
  10. print("getInstance");
  11. if (instance == null) {
  12. instance = new Http();
  13. }
  14. }
  15. Http() {
  16. // 初始化 Options
  17. _options = BaseOptions(
  18. baseUrl: _config.baseUrl,
  19. connectTimeout: _config.connectTimeout,
  20. receiveTimeout: _config.receiveTimeout,
  21. headers: {}
  22. );
  23. _dio = new Dio(_options);
  24. // //发送请求拦截处理,例如:添加token使用
  25. // _dio.interceptor.request.onSend = (Options options) async{
  26. // print(options.baseUrl);
  27. // return options;
  28. // };
  29. // //请求成功拦截,简化代码中调用难度
  30. // _dio.interceptor.response.onSuccess = (Response response) async{
  31. // print(response.statusCode);
  32. // return response;
  33. // };
  34. // //请求失败拦截
  35. // _dio.interceptor.response.onError = (DioError e) {
  36. // print(e);
  37. // return e;
  38. // };
  39. }
  40. // get 请求封装
  41. get(url, {
  42. options,
  43. cancelToken,
  44. data = null
  45. }) async {
  46. print('get:::url:$url ,body: $data');
  47. Response response;
  48. try {
  49. response = await _dio.get(
  50. url,
  51. queryParameters: data,
  52. cancelToken: cancelToken
  53. );
  54. }
  55. on DioError
  56. catch (e) {
  57. if (CancelToken.isCancel(e)) {
  58. print('get请求取消! ' + e.message);
  59. } else {
  60. print('get请求发生错误:$e');
  61. }
  62. }
  63. return response.data;
  64. }
  65. // post请求封装
  66. post(url, {
  67. options,
  68. cancelToken,
  69. data = null
  70. }) async {
  71. print('post请求::: url:$url ,body: $data');
  72. Response response;
  73. try {
  74. response = await _dio.post(
  75. url,
  76. data: data != null ? data : {},
  77. cancelToken: cancelToken
  78. );
  79. print(response);
  80. }
  81. on DioError
  82. catch (e) {
  83. if (CancelToken.isCancel(e)) {
  84. print('get请求取消! ' + e.message);
  85. } else {
  86. print('get请求发生错误:$e');
  87. }
  88. }
  89. return response.data;
  90. }
  91. }