如何使用用户名和传递以及 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 获取数据的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从SSIS源动态创建表

如何从当前用户检索(Jwt)访问令牌并将其传递给 asp.net 样板(abp)中的移动应用程序?

如何在数据流任务SSIS 2008 r2中传递变量

如何从 jwt 令牌获取确切的用户以及用户在 laravel 中的确切帖子

使用动态变量创建 SSIS 包

如何在 ADO.NET 源 SSIS 中传递参数