状态代码处理与
该 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。