数据工厂无法使用基本身份验证从 Web API 下载 CSV 文件
Data Factory can't download CSV file from web API with Basic Auth
我正在尝试使用 HTTP 连接器作为副本中的源链接服务从数据工厂的网站下载 CSV 文件 activity。它基本上是对 url 的网络调用,看起来像 https://www.mywebsite.org/api/entityname.csv?fields=:all&paging=false.
该网站使用基本身份验证。我已经通过在浏览器中使用 url 并输入凭据进行了手动测试,一切正常。我在副本 activity 中使用 REST 连接器将数据下载为 JSON 文件(相同 url,只是其中没有“.csv”),并且工作正常。但是 HTTP 连接器中的身份验证有些不同并会导致问题。当我尝试执行我的副本 activity 时,它会下载一个 csv 文件,其中包含源网站登录页面的 HTML。
在搜索时,我确实遇到了这个 Github issue on the docs,它表明基本身份验证 header 最初并未发送,这可能会导致问题。
据我所知,身份验证是在链接服务中定义的。我希望也许我可以在我的副本 activity 中向源的附加 Headers 或请求 Body 属性添加一些内容来完成这项工作,但我还没有找到合适的事情还没有。
使用 HTTP 连接器和 basic auth 尝试的建议或工作副本 activity 的代码示例将不胜感激。
我建议您尝试使用 REST 连接器而不是 HTTP 连接器。它支持 Basic 作为身份验证类型,我已经使用 HTTPbin.org
上的测试端点对其进行了验证
以上是 REST 链接服务的配置。创建连接到此链接服务的数据集后,您可以将其包含在副本中 activity.
管道执行后,REST 响应的内容将保存在指定的文件中。
HTTP 连接器期望在初始请求后 API 到 return 401 未经授权的响应。然后它以基本的身份验证凭据进行响应。如果 API 不这样做,它将不会使用 HTTP 链接服务中提供的凭据。
如果是这样,请转到副本 activity 源,并在附加的 headers 属性 中添加 Authorization: Basic 后跟 [=17 的 base64 编码字符串=].它应该看起来像这样(最后的字符串是编码的 username:password):
Authorization: Basic ZxN0b2njFasdfkVEH1fU2GM=`
最好不要将其硬编码到副本 activity 中,而是从 Key Vault 检索并作为安全输入传递给副本 activity。
我正在尝试使用 HTTP 连接器作为副本中的源链接服务从数据工厂的网站下载 CSV 文件 activity。它基本上是对 url 的网络调用,看起来像 https://www.mywebsite.org/api/entityname.csv?fields=:all&paging=false.
该网站使用基本身份验证。我已经通过在浏览器中使用 url 并输入凭据进行了手动测试,一切正常。我在副本 activity 中使用 REST 连接器将数据下载为 JSON 文件(相同 url,只是其中没有“.csv”),并且工作正常。但是 HTTP 连接器中的身份验证有些不同并会导致问题。当我尝试执行我的副本 activity 时,它会下载一个 csv 文件,其中包含源网站登录页面的 HTML。
在搜索时,我确实遇到了这个 Github issue on the docs,它表明基本身份验证 header 最初并未发送,这可能会导致问题。
据我所知,身份验证是在链接服务中定义的。我希望也许我可以在我的副本 activity 中向源的附加 Headers 或请求 Body 属性添加一些内容来完成这项工作,但我还没有找到合适的事情还没有。
使用 HTTP 连接器和 basic auth 尝试的建议或工作副本 activity 的代码示例将不胜感激。
我建议您尝试使用 REST 连接器而不是 HTTP 连接器。它支持 Basic 作为身份验证类型,我已经使用 HTTPbin.org
上的测试端点对其进行了验证以上是 REST 链接服务的配置。创建连接到此链接服务的数据集后,您可以将其包含在副本中 activity.
管道执行后,REST 响应的内容将保存在指定的文件中。
HTTP 连接器期望在初始请求后 API 到 return 401 未经授权的响应。然后它以基本的身份验证凭据进行响应。如果 API 不这样做,它将不会使用 HTTP 链接服务中提供的凭据。
如果是这样,请转到副本 activity 源,并在附加的 headers 属性 中添加 Authorization: Basic 后跟 [=17 的 base64 编码字符串=].它应该看起来像这样(最后的字符串是编码的 username:password):
Authorization: Basic ZxN0b2njFasdfkVEH1fU2GM=`
最好不要将其硬编码到副本 activity 中,而是从 Key Vault 检索并作为安全输入传递给副本 activity。