使用 Web.Contents
处理状态代码
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
。