使用
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。