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

Postman调用Bot接口正常但Flutter请求无法识别历史查询地点问题

问题排查及解决方案

核心问题

你当前的请求逻辑存在会话上下文无法关联的问题,这是Postman请求正常、Flutter端异常的根本原因,具体排查点如下:

  • 每次请求新建独立Dio实例,无Cookie持久化能力
    你每次调用接口都通过Dio()创建全新的Dio实例,不同实例之间的Cookie、连接池完全隔离,服务端第一次请求返回的Set-Cookie响应头(用来关联用户历史查询上下文的会话标识)不会被后续请求自动携带。Postman会自动存储同域名下的所有Cookie,所以两次请求可以关联为同一个用户的连续查询。你手动写死的Cookie: 'session=$userToken'要么不是服务端用来关联查询上下文的标识,要么第一次请求后服务端更新了session值,后续请求未同步更新。
  • Cookie字段不完整
    你手动拼接的Cookie只包含session字段,服务端可能还有其他用于会话校验的Cookie字段,Postman会自动携带该域名下所有Cookie,你手动构造的Cookie字段不全导致服务端无法识别连续请求的关联关系。
  • 用户标识不一致
    确认两次请求携带的user参数值是否完全一致,如果存在userId获取异常的情况,服务端会判定为不同用户的请求,自然找不到上一次查询的地点。

修复方案

  1. 使用全局单例Dio实例,配合Cookie管理器自动维护会话Cookie,不要每次请求新建Dio实例
  2. 移除手动拼接的Cookie头,由Cookie管理器自动处理所有Cookie的存储和携带

修复后代码示例

首先添加依赖到pubspec.yaml:

dependencies:
  dio: ^5.4.0
  dio_cookie_manager: ^3.1.1
  cookie_jar: ^4.0.8

业务代码:

import 'package:dio/dio.dart';
import 'package:dio_cookie_manager/dio_cookie_manager.dart';
import 'package:cookie_jar/cookie_jar.dart';

// 全局初始化一次Dio单例,应用启动时调用initDio即可
final Dio globalDio = Dio();
final CookieJar cookieJar = CookieJar();

void initDio() {
  // 添加Cookie管理拦截器,自动处理Cookie的存储和携带
  globalDio.interceptors.add(CookieManager(cookieJar));
  // 全局配置通用请求头,无需每次请求重复配置
  globalDio.options.headers = {
    'Connection': 'keep-alive',
    'Keep-Alive': 'timeout=5,max=100',
    'Content-Type': 'application/json; charset=UTF-8',
  };
}

// 业务请求逻辑
final String userId = UserPreferences().getUserId().toString();
final url = Uri.parse('你的实际接口地址');
final String userToken = UserPreferences().getToken();

String dateFormat = "${DateTime.now().toLocal().year}-${DateTime.now().toLocal().month.toString().padLeft(2, '0')}-${DateTime.now().toLocal().day.toString().padLeft(2, '0')}";

var body = {
  "text": message,
  "user": int.parse(userId),
  "date": dateFormat,
  "url": "www.test14.com",
  "is_user": true
};

var resp = await globalDio.post(url.toString(),
    data: body,
    options: Options(headers: <String, String>{
      'Authorization': userToken,
    }));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:15:03