我正在尝试从 REST API 获取数据并将 json 字符串保存到 DataLake 中,但出现错误。我已经按照这里提到的步骤 https://docs.microsoft.com/en-us/azure/data-factory/connector-rest & https://www.alexvolok.com/2019/adfv2-rest-api-第 1 部分-oauth2/
我尝试连接的 API 使用 OAuth2,因此我需要首先获取访问令牌,然后执行获取请求以获取实际数据。
以下是我正在遵循的步骤
在管道中创建 Web HTTP 请求,并在请求正文中传递 client_ID、客户端密码、用户名、密码和授权类型。当我调试管道时,我确实得到了我在步骤 2 中需要的 Access_token。
在第二步中,我有一个复制活动,它使用来自 web 的输出(access_token)来验证第二个 REST GET 请求,但这是我面临很多问题的地方。我使用的代码是“@concat('Bearer', activity('GetAccessToken').output.access_token)”
在第 3 步中,我有两个数据集和 2 个链接服务,数据集 1 是一个 REST 数据集,它具有链接到 REST 链接服务的基本 url 和相对 url,其次,接收器数据集连接到 AZURE 数据湖存储。
在源数据集中,我传递了额外的标头 Authorization = @concat('Bearer', activity('GetAccessToken').output.access_token) 理想情况下,如果没有发送参数,我想调用的 API 将返回空,所以我通过在“请求正文”内的参数中是否正确?请求正文将类似于“start_date=2020/07/17&end_date=2020/07/18”。
sink 是存储在 DataLake 中的简单 Json 数据集。
当我尝试调试时,出现如下错误
但我收到以下错误
{
"errorCode": "2200",
"message": "Failure happened on 'Source' side. ErrorCode=UserErrorHttpStatusCodeIndicatingFailure,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=The HttpStatusCode 401 indicates failure. { \"Error\": { \"Message\":\"Authentication failed: Invalid headers\", \"Server-Time\":\"2020-07-27T06:59:24\", \"Id\":\"6AAF87BC-5634-4C28-8626-810A19B86BFF\" } },Source=Microsoft.DataTransfer.ClientLibrary,'",
"failureType": "UserError",
"target": "CopyDataFromAPI",
"details": []
}
请告知我是否做错了什么。