Para um proxy HTTP que oferece autenticação básica, o proxyAuthenticator do OkHttp pode devolver uma solicitação com credenciais. Devolva null depois que uma tentativa de autorização já tiver sido rejeitada, em vez de enviar a mesma resposta novamente:

.proxyAuthenticator { _, response ->
    if (response.request.header("Proxy-Authorization") != null) {
        null
    } else {
        response.request.newBuilder()
            .header("Proxy-Authorization",
                    Credentials.basic(proxyUser, proxyPassword))
            .build()
    }
}

Este esboço usa valores de conta da configuração secreta da aplicação. A proteção permite uma tentativa inicial e interrompe uma repetida. Ele implementa Basic, não todos os esquemas que um proxy possa anunciar; inspecione o desafio antes de escolher essa resposta.

Se o resultado final continuar 407, compare o proxy selecionado, o esquema anunciado e a identidade de conta documentada. Uma palavra-passe rejeitada, um método não suportado e uma forma de nome de utilizador incorreta exigem correções diferentes. Guarde essas observações e o estado final em diagnósticos expurgados.

O CONNECT tem outro contexto de retorno de chamada: o OkHttp documenta um desafio sintético de autenticação de proxy preventiva antes de abrir o túnel. Trate esse contexto conforme a API em vez de assumir que cada retorno é uma resposta de destino comum.

O authenticator separado serve para a autenticação no servidor de destino. Mantenha as suas credenciais separadas do início de sessão do proxy; um interceptor genérico que coloca uma palavra-passe de proxy em cada pedido de saída pode enviá-la no âmbito errado.

Relatórios históricos também descrevem erros de implementação, incluindo o tratamento do corpo de uma resposta de proxy rejeitada. Registe a versão do OkHttp e a troca final antes de atribuir uma falha atual a um relatório antigo. A decisão de nova tentativa deve continuar a interromper uma tentativa de credenciais inalterada que não tem qualquer resposta nova útil.

Artigos relacionados