Flutter Dart中调用REST API如何获取错误信息?
Flutter调用REST API获取错误信息的方法
当然可以获取错误信息,除了状态码,服务器返回的错误消息通常包含在响应体中,以下是两种常用HTTP库的实现方式:
使用http包
通过解析响应体提取错误消息,需根据API返回的结构调整字段:
import 'package:http/http.dart' as http; import 'dart:convert'; void callApi() async { final response = await http.get(Uri.parse('目标API地址')); if (response.statusCode >= 400) { // 若API返回JSON格式错误数据 final errorJson = jsonDecode(response.body); print(errorJson['message']); // 替换为实际错误字段名 // 若API直接返回纯文本错误(如你示例中的内容) print(response.body); } else { // 处理成功响应逻辑 } }
使用dio包
dio对错误处理有更便捷的封装:
import 'package:dio/dio.dart'; void callApi() async { try { final response = await Dio().get('目标API地址'); // 处理成功响应逻辑 } on DioException catch (e) { if (e.response != null) { // 服务器返回的错误数据 final errorData = e.response?.data; print(errorData['message']); // 适配API实际字段 // 直接打印完整错误响应体 print(e.response?.body); } else { // 网络或请求层面的错误 print(e.message); } } }
注意:错误消息的字段名(如message)需和后端API的返回结构保持一致,若API返回纯文本错误内容,直接打印响应体即可获取示例中的错误文本。
内容的提问来源于stack exchange,提问作者user_odoo
相关产品推荐
相关产品推荐

