azure-data-factory - 数据工厂无法使用基本身份验证从 Web API 下载 CSV 文件
问题描述
我正在尝试使用 HTTP 连接器作为复制活动中的源链接服务从数据工厂中的网站下载 CSV 文件。它基本上是对看起来像https://www.mywebsite.org/api/entityname.csv?fields=:all&paging=false的 url 的网络调用。
该网站使用基本身份验证。我已经通过在浏览器中使用 url 并输入凭据进行了手动测试,一切正常。我在复制活动中使用 REST 连接器将数据下载为 JSON 文件(相同的 url,只是没有“.csv”),并且工作正常。但是 HTTP 连接器中的身份验证有些不同并会导致问题。当我尝试执行我的复制活动时,它会下载一个 csv 文件,其中包含源网站上登录页面的 HTML。
在搜索时,我确实在文档中遇到了这个Github 问题,该问题表明最初没有发送基本身份验证标头,这可能会导致问题。
正如我现在所拥有的,身份验证是在链接服务中定义的。我希望也许我可以在我的复制活动中向源的 Additional Headers 或 Request Body 属性添加一些东西来完成这项工作,但我还没有找到正确的东西。
非常感谢使用 HTTP 连接器和基本身份验证的工作副本活动的尝试或代码示例的建议。
解决方案
HTTP 连接器期望 API 在初始请求后返回 401 Unauthorized 响应。然后它以基本身份验证凭据进行响应。如果 API 不这样做,它将不会使用 HTTP 链接服务中提供的凭据。
如果是这种情况,请转到复制活动源,并在附加标头属性中添加授权:基本后跟用户名:密码的 base64 编码字符串。它应该看起来像这样(最后的字符串是编码的用户名:密码):
Authorization: Basic ZxN0b2njFasdfkVEH1fU2GM=`
最好不要将其硬编码到复制活动中,而是从 Key Vault 中检索并作为安全输入传递给复制活动。
推荐阅读
- flutter - 推另一页时滑出一页的最佳方法是什么?
- hadoop - 可以在 Hadoop 集群的 Map Task 中启动特定进程吗?
- macros - 宏内部的 SAS 子字符串
- python - 我们如何合并字典的键值?
- excel - 自动调整过滤器时,忽略范围之外或不存在的过滤器
- spring-boot - 如何使用我自己的保存声明而不是 Spring Data 的保存声明?
- c# - 如果 Window 的构造函数中抛出异常,则不加载窗口
- python-3.x - 尝试与 ScrollView 中的对象交互时,有没有办法解决滞后问题
- python-3.x - 使用 concurrent.future 的 Teradata 并发连接
- r - 尝试在 KernSmooth 的 bkde2D 函数中设置 range.x 会导致“'to' must be afinite number”