import 'dart:convert';

import 'package:dio/dio.dart';

// Create a dio instance
Dio dio = new Dio();

class HttpUtils {
  HttpUtils() {
    // Add an interceptor to the constructor
    dio.interceptors.add(CustomInterceptors());
  }
	// Get method path and query parameters
  Future get(path, query) async {
    Response resp;
    try {
      resp = await dio.get(path, queryParameters: query);

      if (resp.statusCode == 200) {
        String val = resp.toString();
        return jsonDecode(val);
      } else {
        String val = resp.toString();
        returnjsonDecode(val); }}catch (error) {
      returnerror; }}/ / post method
  Future post(path, data) async {
    Response resp;
    try {
      resp = await dio.post(path, data: data);
      if (resp.statusCode == 200) {
        String val = resp.toString();
        return jsonDecode(val);
      } else {
        String val = resp.toString();
        returnjsonDecode(val); }}catch (error) {
      return error;
    }
  }

  Future put(path, data) async {
    Response resp;
    try {
      resp = await dio.put(path, data: data);
      if (resp.statusCode == 200) {
        String val = resp.toString();
        return jsonDecode(val);
      } else {
        String val = resp.toString();
        returnjsonDecode(val); }}catch (error) {
      returnerror; }}}class CustomInterceptors extends InterceptorsWrapper {
// The future function can be set asynchronously
  @override
  Future onRequest(RequestOptions options) {
    // Set timeout
    options.connectTimeout = 30000;
    options.receiveTimeout = 30000;
    / / set the token
    options.headers["Authorization"] = "Bearer ";
    // Set the request header
    options.headers['content-type'] = "application/x-www-form-urlencoded";
    
    print('-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - requests start -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --');
    print('- Request mode:${options? .method}');
    print('- Request data:${options? .data}');
    print('- Request header information:${options.headers}');
    return super.onRequest(options);
  }

  @override
  Future onResponse(Response response) {
    print('-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- end request -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --');
    return super.onResponse(response);
  }

  @override
  Future onError(DioError err) {
    print('-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- error request -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --');
    print('- Error type:${err.type}');
    print('- Error message:${err.message}');
    print('- error: $err');
    return super.onError(err); }}Copy the code