Basic аутентификациясын ұсынатын HTTP прокси үшін OkHttp proxyAuthenticator-і тіркелгі деректері бар сұрауды қайтара алады. Авторизация әрекеті бұрын қабылданбағаннан кейін сол жауапты қайта жіберудің орнына null қайтарыңыз:

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

Бұл эскиз қолданбаның құпия конфигурациясындағы тіркелгі мәндерін пайдаланады. Күзетші бірінші әрекетке рұқсат береді және қайталанған әрекетті тоқтатады. Ол Basic-ті іске асырады, прокси жариялауы мүмкін барлық схемаларды емес; сол жауапты таңдамас бұрын шақыруды тексеріңіз.

Егер соңғы нәтиже әлі де 407 болса, таңдалған проксиді, жарияланған схеманы және құжатталған тіркелгі сәйкестігін салыстырыңыз. Қабылданбаған құпиясөз, қолдау көрсетілмейтін әдіс және қате пайдаланушы атының пішіні әртүрлі түзетулерді қажет етеді. Бұл байқауларды және соңғы күйді өңделген диагностикада сақтаңыз.

CONNECT-тің басқа қайта шақыру контексті бар: OkHttp туннельді ашпас бұрын синтетикалық алдын ала прокси аутентификация шақыруын құжаттайды. Әрбір қайта шақыру қарапайым мақсат жауабы деп болжамай, бұл контексті API-ге сәйкес өңдеңіз.

Бөлек authenticator мақсат серверінің аутентификациясына арналған. Оның тіркелгі деректерін прокси кіруінен бөлек ұстаңыз; әрбір шығыс сұрауға прокси құпиясөзін қоятын жалпы интерцептор оны қате ауқымда жіберуі мүмкін.

Тарихи есептер іске асыру қателерін де сипаттайды, соның ішінде қабылданбаған прокси жауабының денесін өңдеу. Ағымдағы сәтсіздікті ескі есепке жатқызбас бұрын OkHttp нұсқасын және соңғы алмасуды жазып алыңыз. Қайталау шешімі пайдалы жаңа жауабы жоқ өзгермеген тіркелгі деректері әрекетін әлі де тоқтатуы керек.

Қатысты мақалалар