状态代码处理与 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 已禁止

注释

扩展可以在状态代码为 401 和 403 时使用 ManualStatusHandling 选项,而无法在自定义数据连接器外部(即直接通过 Power Query)进行的 Web.Contents 调用中实现。

Redirection

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

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

注释

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