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

调用MainActivity中getStory时出现invalid token structure,重启后消失如何解决?

问题排查与修复方案

问题描述

调用GetStory接口加载故事列表时,MainActivity的getStory()方法抛出**"invalid token structure"**错误,导致列表无法显示;重启应用后该问题自动消失,需实现无需重启即可正常加载列表的效果。已确认token已成功保存,排除空token的可能性。

可能原因及修复建议

  • Token缺少Bearer前缀
    绝大多数后端API要求Authorization请求头格式为Bearer {token},若直接使用纯token字符串,会触发格式错误。重启后可能因为初始化流程补全了前缀,请求恢复正常。
    检查getStory()里构建请求头的代码,确保格式正确:

    // 示例:正确拼接前缀(根据实际代码语言调整)
    val authorization = "Bearer ${savedToken}"
    
  • Token加载时机不对
    若getStory()在token完成持久化存储前就执行,可能读取到旧的无效值。重启后token已稳定存储,请求恢复正常。
    调整调用逻辑:确保在确认token保存完成后再触发getStory(),比如在存储操作的回调里、协程await()之后执行列表加载。

  • 存储工具的异步读写延迟
    比如使用SharedPreferences时,写入操作可能是异步的,写完立刻读可能拿到旧数据。重启后异步写入完成,就能读到正确token。
    检查存储token的代码,要么用同步写入方式,要么等写入回调触发后再发起API请求。

  • 请求客户端缓存了错误头
    首次请求携带错误token后,客户端(如OkHttp/Retrofit)可能缓存了错误的请求头,导致后续请求持续失败;重启后缓存清空,请求恢复正常。
    排查请求客户端配置,禁用请求头缓存,或每次请求都重新构建Authorization头。

重点代码检查方向

专注查看MainActivity中的getStory()方法,以及token的读取、存储逻辑:

  1. 确认读取token时是否拼接了Bearer 前缀;
  2. 确认getStory()是否在token存储完成后才被调用;
  3. 检查存储token的方法是否有等待写入完成的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 15:38:15