Web.Contents

语法

 
Web.Contents(url as text, optional options as nullable record) as binary

关于

以二进制形式返回从 url 下载的内容。 可以提供可选记录参数 options 来指定额外的属性。 记录可以包含以下字段:

  • Query:以编程方式将查询参数添加到 URL,无需担心转义。
  • ApiKeyName:如果目标站点具有 API 密钥的概念,则可以使用此参数来指定必须在 URL 中使用的密钥参数的名称(而不是值)。 凭据中提供了实际的密钥值。
  • Headers:将此值指定为记录将为 HTTP 请求提供额外的标头。
  • Timeout:将此值指定为持续时间将更改 HTTP 请求的超时值。 默认值为 100 秒。
  • ExcludedFromCacheKey:将此值指定为列表会将这些 HTTP 标头键排除在对缓存数据的计算之外。
  • IsRetry:如果将此逻辑值指定为 true,在提取数据时则将忽略缓存中的任何现有响应。
  • ManualStatusHandling:将此值指定为列表将防止对响应具有以下状态代码之一的 HTTP 请求进行任何内置处理。
  • RelativePath:如果将此值指定为文本,那么在发出请求前会将此值追加到基 URL。
  • Content:指定此值会将 Web 请求从 GET 更改为 POST,并使用此选项的值作为 POST 的内容。

HTTP 请求以 GET(未指定内容时)或 POST(指定内容时)的形式发出。 POST 请求只能匿名发出。

HTTP 响应的标头可在二进制结果中用作元数据。 在自定义数据连接器上下文之外,只有一部分响应头可用(出于安全原因)。

示例 1

使用 RelativePathQuery 选项检索 "https://bing.com/search?q=Power+Query" 的内容。 这些选项可用于动态查询静态基 URL。

使用情况

let
    searchText = "Power Query"
in
    Web.Contents(
        "https://www.bing.com",
        [
            RelativePath = "search",
            Query = [q = searchText]
        ]
    )

输出

binary

示例 2

对 URL 执行 POST,传递二进制 JSON 有效负载,将响应解析为 JSON。

使用情况

let
    url = ...,
    headers = [#"Content-Type" = "application/json"],
    postData = Json.FromValue([x = 235.7, y = 41.53]),
    response = Web.Contents(
        url,
        [
            Headers = headers,
            Content = postData
        ]
    ),
    jsonResponse = Json.Document(response)
in
    jsonResponse

输出

table

示例 3

连接一个安全 URL,该 URL 接受身份验证密钥作为查询字符串的一部分。 可通过在 M 中指定密钥的名称(而不是其值),选择 Web API 身份验证,并输入密钥值作为 Web API 凭据的一部分,来安全地提供密钥,而不是在 M 中对密钥进行硬编码(这会带来安全风险)。 这样使用时,以下示例将生成对 "https://contoso.com/api/customers/get?api_key=******" 的请求。

使用情况

Web.Contents("https://contoso.com/api/customers/get", [ApiKeyName="api_key"])

输出

binary

详细信息

自定义连接器中 Web.Contents 的状态代码处理