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
使用 RelativePath
和 Query
选项检索 "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