我在 ADF 中有一个一步管道,它是一个“Web 事件”,它将 GET
请求发送到简单的 REST API。完整的定义如下:
网址
:https://allstate.myabsorb.com/api/rest/v1/ecommerce/transactions?transactiondate=2021-01-11
方法
:GET
标题
授权
:xyz/123+abc123==
内容类型
:application/json
当我通过Postman执行这个请求时,请求成功。但是,当我通过 Azure 数据工厂中的 Web 事件发送相同的请求时,我收到以下错误消息:
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 仍然认为这是一个错误,但这是所需的输出)问题是,在实践中我无法从string 因为 token 无效,这意味着我无法访问 API...我需要一种方法将授权字符串修改为正确的“类型”而不更改值。
有没有办法允许在此 REST API 调用的授权字符串中使用特殊字符?
这就是 Postman 中成功结果的样子
最佳答案
要解决这个问题,只需在xyz/123+abc123==
前面添加Basic
即可,标题应为:
授权
: 基本 xyz/123+abc123==
请注意,Basic
和 xyz/123+abc123==
之间有一个空格,这样就可以正常工作。
关于escaping - Azure 数据工厂- "Invalid format"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67390985/