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

Flutter POST请求Android端x-auth-token被截断至1024字节问题

解决Flutter Android端响应头x-auth-token被截断问题

问题原因

Android平台原生的HttpURLConnection默认限制单个响应头的值长度为1024字节,Flutter官方http包在Android环境下底层依赖该实现,所以会导致超长的x-auth-token被截断,而iOS和Web平台没有这个限制,因此能获取完整token。

解决方案

方案1:改用Dio网络库

Dio在Android端底层使用OkHttp,不存在响应头长度限制问题,是最便捷的解决方式。

  1. 先在pubspec.yaml添加依赖:
dependencies:
  dio: ^5.4.0 # 请使用最新版本
  1. 替换原有请求代码:
import 'package:dio/dio.dart';

...
String url = 'http://localhost:8080/backoffice/login';
final dio = Dio();

try {
  final response = await dio.post(
    url,
    options: Options(headers: {"Content-Type": "application/json"}),
    // 如果需要传请求体,添加data参数:data: yourRequestBodyMap
  );
  String? token = response.headers.value('x-auth-token');
  print(token); // 此时能获取完整token
} catch (e) {
  // 处理异常
}
...

方案2:调整服务器端返回逻辑

如果无法修改客户端,可以让服务器将x-auth-token的内容放到响应体中,客户端从响应体解析完整token,比如:

// 假设响应体是{"token": "完整的token字符串"}
final responseData = jsonDecode(response.body);
String token = responseData['token'];

方案3:替换Android端默认Http客户端(进阶)

通过自定义Flutter的Http客户端,改用OkHttp替代HttpURLConnection,但需要编写Android原生代码或使用第三方适配包,步骤相对繁琐,推荐优先使用方案1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:10:02