Partilhar via


Tratamento do Código de Estado com Web.Contents

A Web.Contents função tem alguma funcionalidade incorporada para lidar com certos códigos de estado HTTP. O comportamento padrão pode ser substituído na sua extensão usando o ManualStatusHandling campo do registo de opções.

Retentativa automática

Web.Contents irá automaticamente voltar a tentar pedidos que falhem 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

Os pedidos serão repetidos 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 atualmente não é suportado.

Exceções de autenticação

Os seguintes códigos de estado resultarão numa exceção de credenciais, causando um prompt de autenticação a pedir ao utilizador que forneça credenciais (ou inicie sessão novamente no caso de um token OAuth expirado).

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

Observação

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

Redirection

Os seguintes códigos de estado resultarão num redirecionamento automático para o URI especificado no Location cabeçalho. Um cabeçalho em falta Location resultará num 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 o POST método de requisição. Todos os outros códigos de estado de redirecionamento resultarão numa mudança para GET.