You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter/Dart中如何访问打印HTTP响应体内的ErrEntity字段内容

Flutter 从登录接口响应中提取ErrEntity节点方法

你当前拿到的res.body是序列化的JSON字符串,不能直接通过键名取值,需要先解码为Dart支持的Map结构,再按照JSON的嵌套层级逐层访问即可,具体实现如下:

  • 第一步:在对应文件顶部引入Dart内置的JSON处理库,无需安装第三方依赖
import 'dart:convert';
  • 第二步:修改原有登录请求方法,拿到响应后增加解码、取值逻辑
void sendLogin() async {
    var map = <String, dynamic>{
      "UserName": _usernameController.text,
      "Password": _passwordController.text,
    };

    var res = await http.post(
      Uri.parse("http://192.168.1.8:8080/HongLeong/LOGIN_REQUEST.do"),
      body: map,
    );
    
    print(res.statusCode);
    print(res.body);

    // 将JSON字符串解码为Dart可操作的Map对象
    final Map<String, dynamic> respJson = jsonDecode(res.body);
    // 按嵌套路径取值:根节点RESPONSE -> 子节点BASEL_RESPONSE -> 目标节点ErrEntity
    final Map<String, dynamic>? errEntity = respJson['RESPONSE']?['BASEL_RESPONSE']?['ErrEntity'];

    if (errEntity != null) {
      // 打印ErrEntity完整内容
      print('完整错误节点内容:$errEntity');
      // 按需读取节点内的单个字段
      print('错误ID:${errEntity['MessageID']}');
      print('错误信息:${errEntity['Message']}');
      print('关联请求ID:${errEntity['last_req_id']}');
    }
}

代码中的?是空安全访问符,作用是当某一层级的节点不存在时,直接返回null而不是抛出空指针崩溃,如果你能确定接口返回结构固定不会缺字段,也可以去掉这个符号。

运行后控制台就会输出你需要的ErrEntity完整内容:

完整错误节点内容:{MessageID: 1110, Message: Field Code is mandatory, last_req_id: 50029, table_id: 0, operation_id: 0}

额外提一句,从返回的错误信息Field Code is mandatory可以看出,你当前请求除了用户名、密码外还缺少必填的Code参数,这也是登录请求没有返回成功数据的原因,后续调试可以对应补上参数。

内容的提问来源于stack exchange,提问作者JoshuaaMarkk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 11:57:18