Azure Data Factory Web活动如何获取接口返回的Bearer Token
ADF调用Token接口仅返回OK状态无法提取Bearer Token的解决方法
问题场景
- 待调用接口标注为GET方法,实际通过.NET
PostAsync调用可正常获取Bearer Token,接口示例地址:https://myapi.mysite.org/api/ApiToken?user=u111&password=p111 - 在Azure Data Factory(简称ADF)中配置Web活动调用该接口时,仅返回"OK"状态,界面上无直接提取Bearer Token的选项
- 预期逻辑:接口返回状态码为OK时,反序列化响应内容提取Token值
- 可正常获取Token的.NET参考代码如下:
var result = client.PostAsync(ApiUrl).Result; string strRes = result.StatusCode.ToString(); if (strRes == "OK") { var obj = Newtonsoft.Json.JsonConvert.DeserializeObject(result.Content.ReadAsStringAsync().Result); varToken = obj.Token; }
操作步骤
- 修正Web活动的请求方法:不要按照接口文档标注选择GET,和可用的.NET代码逻辑保持一致,请求方法选择POST,填入对应接口URL,URL参数携带正确的
user、password值即可,无需额外特殊请求头配置。 - 找到响应内容存放位置:调试运行Web活动后,不要只看表层返回的OK状态,点开活动运行结果的
Output面板,接口返回的完整JSON响应体存放在Response字段下,并非平铺在输出根目录。 - 提取Bearer Token:ADF内置JSON解析能力,不需要单独编写反序列化代码,后续活动直接通过动态表达式取值即可:
- 取完整响应内容的表达式:
@activity('你的Web活动自定义名称').output.Response - 直接提取Token字段的表达式:
@json(activity('你的Web活动自定义名称').output.Response).Token
- 取完整响应内容的表达式:
- 对齐状态校验逻辑:新增If条件活动,和.NET代码的判断逻辑保持一致,判断条件写法如下:
条件成立的分支内,再执行Token提取、后续业务接口调用的逻辑即可。@equals(activity('你的Web活动自定义名称').output.Status, 'OK')
内容的提问来源于stack exchange,提问作者Vaibhav Vishwas
相关产品推荐
相关产品推荐

