Compartilhar via


Tratamento de código de status com Web.Contents

A função Web.Contents tem algumas funcionalidades internas para tratar determinados códigos de status de HTTP. O comportamento padrão pode ser substituído na extensão usando o campo ManualStatusHandling no registro de opções.

A repetição automática

Web.Contents repetirá automaticamente as solicitações que falharem com um dos seguintes códigos de status:

Código Status
408 Tempo Limite da Solicitação
429 Número Excessivo de Solicitações
503 Serviço indisponível
504 Tempo Limite do Gateway
509 Limite de Largura de Banda Excedido

As solicitações serão repetidas até três vezes antes de falhar. O mecanismo usa um algoritmo de back-off exponencial para determinar quanto tempo deve aguardar até a próxima repetição, a menos que a resposta contenha um cabeçalho Retry-after. Quando o cabeçalho é encontrado, o mecanismo aguarda o número especificado de segundos antes da próxima repetição. O tempo mínimo de espera suportado é de 0,5 segundos, e o valor máximo é de 120 segundos.

Observação

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

Exceções de autenticação

Os códigos de status a seguir resultarão em uma exceção de credenciais, causando um prompt de autenticação solicitando que o usuário forneça credenciais (ou entre novamente no caso de um token OAuth expirado).

Código Status
401 Não Autorizado
403 Proibido

Observação

As extensões podem usar a opção ManualStatusHandling com os códigos de status 401 e 403, o que não é algo que pode ser feito em chamadas Web.Contents feitas fora de um conector de dados personalizado (ou seja, diretamente do Power Query).

Redirecionamento

Os seguintes códigos de status resultarão em um redirecionamento automático para o URI especificado no cabeçalho Location. A falta do cabeçalho Location resultará em um erro.

Código Status
300 Várias opções
301 Movido Permanentemente
302 Encontrado
303 Ver outro
307 Redirecionamento Temporário

Observação

Somente o código de status 307 manterá um método de solicitação POST. Todos os outros códigos de status de redirecionamento resultarão em uma mudança para GET.