Tratamento de código de status com Web.Contents

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

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 do Pedido
429 Demasiados pedidos
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 esperar até a próxima nova tentativa, a menos que a resposta contenha um Retry-after cabeçalho. Quando o cabeçalho for encontrado, o mecanismo aguardará o número especificado de segundos antes da próxima nova tentativa. O tempo mínimo de espera suportado é de 0,5 segundos e o valor máximo é de 120 segundos.

Nota

O Retry-after valor deve estar no delta-seconds formato. O HTTP-date formato 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

Nota

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

Redirecionamento

Os códigos de status a seguir resultarão em um redirecionamento automático para o URI especificado no Location cabeçalho. Um cabeçalho ausente Location resultará em um erro.

Código Status
400 Múltiplas escolhas
301 Movido permanentemente
302 Encontrado
303 Ver Outros
307 Redirecionamento temporário

Nota

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