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

Flutter API请求Token空格处理导致401认证失败求助

解决Flutter中API请求Authorization头格式问题

问题根源

你给_token加了嵌套引号,导致实际发送的请求头里Authorization值变成了"Token 25e94e9fc7d38d6a10bb9328fb07546881602467",而API要求的是不带引号的Token 25e94e9fc7d38d6a10bb9328fb07546881602467,这就是返回401未授权的直接原因。

另外你提到的空格转+问题,Authorization请求头不需要对空格做编码,HTTP协议允许头字段值包含空格,Flutter的http库会自动正确处理,之前的FormatException大概率是错误地将令牌放到URL查询参数中(而非请求头)导致的。

正确代码实现

直接移除令牌的嵌套引号,正常设置请求头即可:

// 不需要加任何引号,直接写Token + 令牌值
String _token = 'Token 25e94e9fc7d38d6a10bb9328fb07546881602467';

final Map<String, String> header = {
  'Authorization': _token
};

final response = await http.post(url, headers: header, body: json.encode(androidid));
final Map<String, dynamic> decodedResp = json.decode(response.body.toString());
print(decodedResp);
print(response.statusCode);
print(header);

额外说明

如果之前你是把令牌放到URL查询参数中(比如?token=Token xxx),那确实需要编码,但这种场景应该用Uri.https的queryParameters参数让系统自动编码,示例:

// 正确处理URL查询参数中的空格
var url = Uri.https('your-api-domain.com', '/endpoint', {
  'token': _token,
});

不过你的场景是用Authorization头认证,所以不需要这么做,直接按前面的代码设置请求头即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:45:55