getResponseLog method

String getResponseLog(
  1. Response response
)

Implementation

String getResponseLog(Response<dynamic> response) {
  RequestOptions request = response.requestOptions;
  StringBuffer sb = StringBuffer();
  sb.write("请求时间:${response.requestOptions.startTime}\n");
  sb.write("请求链接:${request.uri}\n");
  sb.write("请求方式:${request.method}\n");
  Duration duration = response.requestOptions.endTime
      .difference(response.requestOptions.startTime);
  sb.write("请求时长:${duration.inMilliseconds}ms\n");
  sb.write("状态码:${response.statusCode ?? 0}\n\n");
  if (request.headers.isNotEmpty) {
    sb.write("请求头部:\n");
    request.headers.forEach((key, value) {
      if (value is List) {
        for (var e in value) {
          sb.writeln('$key: $e');
        }
      } else {
        sb.writeln('$key: $value');
      }
    });
    sb.write("\n");
  }
  if (request.data != null) {
    sb.write("请求参数:\n");
    String requestData = "";
    if (request.data is FormData) {
      FormData formData = request.data as FormData;
      requestData = formData.fields
          .map((e) => "${e.key}: ${e.value}")
          .toList()
          .join("\n");
    } else {
      try {
        requestData = _encoder.convert(request.data);
      } catch (_) {
        requestData = request.data.toString();
      }
    }
    sb.write("$requestData\n");
  }
  if (!response.headers.isEmpty) {
    sb.write("响应头部:\n");
    response.headers.forEach((key, value) {
      for (var e in value) {
        sb.writeln('$key: $e');
      }
    });
    sb.write("\n");
  }
  if (response.data != null) {
    sb.write("响应内容:\n");
    String responseData = "";
    try {
      if (response.data is String) {
        dynamic dataMap = _decoder.convert(response.data);
        responseData = _encoder.convert(dataMap);
      } else {
        dynamic prettyString = _encoder.convert(response.data);
        responseData = prettyString;
      }
    } catch (_) {
      responseData = response.data.toString();
    }
    sb.write("$responseData\n");
  }

  return sb.toString();
}