如何使用用户名和传递以及 SSIS 中的动态令牌从 API 获取数据
Posted
技术标签:
【中文标题】如何使用用户名和传递以及 SSIS 中的动态令牌从 API 获取数据【英文标题】:How to get data from an API with username and pass and a dynamic token in SSIS 【发布时间】:2021-10-29 03:20:06 【问题描述】:我需要从 API 获取数据并将数据传输到 SSIS 中的 SQL Server 数据库。我更喜欢在本地进行(例如使用脚本组件中的 C# 代码),问题在于 API 结构: API结构: 1- 使用静态用户名和密码进行身份验证以获得动态客户端令牌(令牌每天都会更改)。 2- 每个请求都必须包含该令牌。
如何连接到 API 并自动获取令牌以处理请求以及如何在 SSIS 中定义列? 非常感谢。
【问题讨论】:
.Net 提供HttpClient 用于通过 HTTP 发送/接收数据。 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。 【参考方案1】:您的令牌可以有一个静态字段:
private static string Token;
如果您的请求不成功,请刷新令牌并重试(我使用的是Restsharp):
var Client = new RestClient("BaseAPIAddress");
var Request = new RestRequest("RestOfAPIAddress", "APIMethod");
Request.AddHeader("Content-Type", "application/json");
Request.AddHeader("secret token", Token);
var Response = Client.Execute(Request);
var result = DeserializeObject(Response.Content);
if (!result.IsSuccessful && RefrshToken())
//Call this method again
刷新方法是这样的:
private bool RefrshToken()
var Client = new RestClient("BaseAPIAddress");
var Request = new RestRequest("RestOfAPIAddress", "APIMethod");
Request.AddHeader("Content-Type", "application/json");
Request.AddJsonBody(new
UserName,
Password
);
var Response = Client.Execute(Request);
if (Response.IsSuccessful)
var result = DeserializeObject(Response.Content);
Token = result.TokenKey;
return true;
return false;
【讨论】:
以上是关于如何使用用户名和传递以及 SSIS 中的动态令牌从 API 获取数据的主要内容,如果未能解决你的问题,请参考以下文章
如何从当前用户检索(Jwt)访问令牌并将其传递给 asp.net 样板(abp)中的移动应用程序?