Lidar com os códigos de estado usando Web.Contents

A função Web.Contents tem alguma funcionalidade incorporada para lidar com certos códigos de estado HTTP. Pode sobrescrever o comportamento padrão na sua extensão usando o ManualStatusHandling campo no registo de opções.

Retentativa automática

O Web.Contents volta a tentar automaticamente os pedidos que falham com um dos seguintes códigos de estado:

Código Situação
408 Tempo de Espera Esgotado
429 Demasiados pedidos
503 Serviço Indisponível
504 Tempo limite do gateway
509 Limite de Largura de Banda Ultrapassado

A função tenta novamente pedidos até três vezes antes de falhar. O motor utiliza um algoritmo de retrocesso exponencial para determinar quanto tempo esperar até à próxima tentativa, a menos que a resposta contenha um Retry-after cabeçalho. Quando o cabeçalho é encontrado, o motor espera o número de segundos especificado antes da próxima tentativa. O tempo mínimo de espera suportado é de 0,5 segundos, e o valor máximo é de 120 segundos.

Observação

O Retry-after valor deve estar no delta-seconds formato. O HTTP-date formato não é atualmente suportado.

Exceções de autenticação

Os seguintes códigos de estado originam uma exceção de credenciais. A exceção pede ao utilizador que forneça credenciais ou que volte a iniciar sessão se um token OAuth expirar.

Código Situação
401 Não autorizado
403 Proibido

Observação

As extensões podem usar a ManualStatusHandling opção com os códigos de estado 401 e 403. Não é possível utilizar esta opção em chamadas Web.Contents efetuadas fora de um conector de dados personalizado (ou seja, diretamente no Power Query).

Redirection

Os seguintes códigos de estado causam um redirecionamento automático para o URI especificado no Location cabeçalho. Um cabeçalho em falta Location causa um erro.

Código Situação
300 Múltiplas Escolhas
301 Movido Permanentemente
302 Encontrado
303 Ver Outros
307 Redirecionamento Temporário

Observação

Só o código de estado 307 mantém um POST método de pedido. Todos os outros códigos de estado de redirecionamento mudam para GET.