【问题标题】:Azure Data Factory - "Invalid format" errorAzure 数据工厂 - “无效格式”错误
【发布时间】:2021-05-04 19:27:00
【问题描述】:

我在 ADF 中有一个单步管道,它是一个单一的“Web 活动”,它将一个 GET 请求发送到一个简单的 REST API。完整定义如下:

URL : https://allstate.myabsorb.com/api/rest/v1/ecommerce/transactions?transactiondate=2021-01-11

Method : GET

标题

Authorization : xyz/123+abc123==

Content-Type : application/json

当我通过 Postman 执行此请求时,请求成功。但是,当我通过 Azure 数据工厂中的 Web Activity 发送相同的请求时,我收到以下错误消息:

Error calling the endpoint 'https://allstate.myabsorb.com/api/rest/v1/ecommerce/transactions?transactiondate=2021-01-11'. Response status code: ''. More details:Exception message: 'The format of value 'xyz/123+abc123==' is invalid.'. No response from the endpoint. Possible causes: network connectivity, DNS failure, server certificate validation or timeout.

通过测试我发现,如果我从授权字符串中删除等号 (=) 和正斜杠 (/),我确实会收到来自 API 的有效响应:

{"Message":"Authorization has been denied for this request."}

这很棒。 这是我正在寻找的预期响应(请注意,ADF 仍然认为这是一个错误,但这是所需的输出)问题是在实践中 我无法从字符串 因为令牌无效,这意味着我无法访问 API...我需要一种方法来将授权字符串修改为正确的“类型”而不更改值。

有没有办法在我的授权字符串中允许特殊字符用于此 REST API 调用?


结果应该如下所示:


这就是 Postman 中成功的结果

【问题讨论】:

  • 您的授权类型是什么?你能在邮递员和网络活动中显示示例请求的屏幕截图吗?
  • 身份验证类型设置为“无”

标签: escaping azure-data-factory azure-data-factory-2 azure-data-factory-pipeline


【解决方案1】:

要解决这个问题,只需在xyz/123+abc123==前面添加Basic ,标题应该是:

Authorization : Basic xyz/123+abc123==

注意Basic和xyz/123+abc123==之间有一个空格,这样就可以正常工作了。

【讨论】:

  • 这乍一看是可行的,但是在授权值前面添加“基本”仍然会使授权令牌无效....换句话说,当我使用“基本 ”时,我的访问请求仍然被拒绝..我确定您已经知道这一点,但是“xyz/123+abc123==”只是与正确格式匹配的授权令牌的一个示例,但实际上并不有效.. .由于显而易见的原因,我无法提供有效的。
  • @aGuy 你的令牌是 jwt(json web 令牌)吗?如果是这样,请尝试使用Bearer 而不是Basic。
  • 没用。在 Postman 中使用“Bearer ”仍会返回拒绝访问消息,因为令牌因附加文本而变得无效。
【解决方案2】:

在尝试创建这样的呼叫后

所以尝试使用授权令牌

我得到的答案是

{"validations":{},"code":500.0,"message":"An unexpected error occurred.","term":"ErrorGeneric","_meta":{"status":500}}

【讨论】:

  • 在这种情况下,我使用了 BEARER 并完成了这项工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多