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

APIM策略设置Authorization头报错:对象引用未设置到实例

解决APIM策略中设置Authorization头时的空引用错误

错误原因

APIM中IResponse的Body流是一次性消费的:你已经通过<set-variable>将tokenResponse的Body读取为字符串并存入SavedResponse,此时Body流的指针已经移到末尾,再次调用Body.As<JObject>()会返回null,访问["access_token"]时自然触发空引用错误。

解决方案

方案1:从已保存的字符串变量解析JSON

直接使用已经存储的SavedResponse字符串解析JSON,避免重复读取响应流:

<set-header name="Authorization" exists-action="override">
    <value>@("Bearer " + JObject.Parse((string)context.Variables["SavedResponse"])["access_token"].ToString())</value>
</set-header>

方案2:缓存响应体以支持多次读取

如果需要保留原响应体的多次读取能力,在第一次解析时添加preserveContent: true参数,将响应体缓存到内存:

  1. 先缓存JSON对象:
<set-variable name="TokenJson" value="@(((IResponse)context.Variables["tokenResponse"]).Body.As<JObject>(preserveContent: true))" />
  1. 再设置Authorization头:
<set-header name="Authorization" exists-action="override">
    <value>@("Bearer " + ((JObject)context.Variables["TokenJson"])["access_token"].ToString())</value>
</set-header>

验证要点

  • 确认SavedResponse或TokenJson变量的跟踪内容中,确实包含access_token字段
  • 确保token响应的Body是合法的JSON格式,无语法错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 21:42:10