使用 Web.Contents 处理状态代码

Web.Contents 函数具有一些内置功能,用于处理某些 HTTP 状态代码。 可以使用ManualStatusHandling中的字段替代扩展中的默认行为。

自动重试

Web.Contents 会自动重试失败的请求,其中包含以下状态代码之一:

Code 状态
408 请求超时
429 请求过多
503 服务不可用
504 网关超时
509 超出带宽限制

函数在失败之前最多重试请求三次。 引擎使用指数退避算法来确定等待到下一次重试的时间,除非响应包含 Retry-after 标头。 找到标头后,引擎将在下次重试前等待指定的秒数。 支持的最小等待时间为 0.5 秒,最大值为 120 秒。

注释

该值 Retry-after 必须采用 delta-seconds 格式。 目前不支持该 HTTP-date 格式。

身份验证异常

以下状态代码会导致凭据异常。 如果 OAuth 令牌过期,异常会提示用户再次提供凭据或登录。

Code 状态
401 未经 授权
403 已禁止

注释

扩展程序可以将 ManualStatusHandling 选项与状态代码 401 和 403 一起使用。 在自定义数据连接器之外发起的 Web.Contents 调用中,无法使用此选项(也就是说,不能直接从 Power Query 中使用)。

Redirection

以下状态代码会导致自动重定向到标头中指定的 Location URI。 缺少 Location 的标头会导致错误。

Code 状态
300 多个选项
301 永久重定向
302 已找到
303 请参阅其他
307 临时重定向

注释

只有状态代码 307 保留 POST 请求方法。 所有其他重定向状态代码都会重定向到 GET