使用
Web.Contents 函数具有某个用于处理某些 HTTP 状态代码的内置功能。 可以使用选项记录中的 ManualStatusHandling 字段在扩展中替代默认行为。
自动重试
Web.Contents 将自动重试失败并且具有以下状态代码之一的请求:
| 代码 | Status |
|---|---|
| 408 | 请求超时 |
| 429 | 请求过多 |
| 503 | 服务不可用 |
| 504 | 网关超时 |
| 509 | 超出带宽限制 |
在失败之前,最多将重试三次请求。 引擎使用指数退避算法来确定等到下一次重试的时长,除非响应包含 Retry-after 标头。 找到标头后,引擎将等待指定的秒数,然后进行下一次重试。 支持的最短等待时间为 0.5 秒,最大值为 120 秒。
注意
此 Retry-after 值必须采用以下 delta-seconds 格式。 目前不支持 HTTP-date 格式。
身份验证异常
以下状态代码将导致凭据异常,并导致出现身份验证提示,请求用户提供凭据(或在 OAuth 令牌过期的情况下再次登录)。
| 代码 | Status |
|---|---|
| 401 | 未授权 |
| 403 | 已禁止 |
注意
扩展可以使用状态代码为 401 和 403 的 ManualStatusHandling 选项,这在自定义数据连接器之外(即直接从 Power Query)进行的 Web.Contents 调用中无法实现。
重定向
以下状态代码将导致自动重定向到 Location 标头中所指定的 URI。 缺少 Location 标头将导致错误。
| 代码 | Status |
|---|---|
| 300 | 多选 |
| 301 | 已永久移动 |
| 302 | 已找到 |
| 303 | 参见其他 |
| 307 | 临时重定向 |
注意
只有状态代码 307 才将保留 POST 请求方法。 所有其他重定向状态代码都将导致切换到 GET。