Za HTTP proxy koji nudi osnovnu autentifikaciju, OkHttp proxyAuthenticator može vratiti zahtjev sa akreditancijama. Vratite null nakon što je pokušaj autorizacije već odbijen, umjesto da ponovo pošaljete isti odgovor:

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

Ova skica koristi vrijednosti računa iz tajne konfiguracije aplikacije. Zaštita dopušta početni pokušaj i zaustavlja ponovljeni. Implementira Basic, ne svaku šemu koju proxy može najaviti; pregledajte izazov prije nego što odaberete taj odgovor.

Ako konačni rezultat ostane 407, uporedite odabrani proxy, najavljenu šemu i dokumentovani identitet računa. Odbijena lozinka, nepodržana metoda i pogrešan oblik korisničkog imena zahtijevaju različite ispravke. Sačuvajte ta zapažanja i konačni status u redigovanoj dijagnostici.

CONNECT ima drugačiji kontekst povratnog poziva: OkHttp dokumentuje sintetički preventivni proxy autentifikacijski izazov prije otvaranja tunela. Obradite taj kontekst u skladu s API-jem umjesto da pretpostavite da je svaki poziv običan odgovor odredišta.

Odvojeni authenticator je za autentifikaciju na odredišnom serveru. Držite njegove akreditacije odvojeno od proxy prijave; generički interceptor koji stavlja proxy lozinku u svaki odlazni zahtjev može je poslati u pogrešan obim.

Historijski izvještaji također opisuju greške u implementaciji, uključujući rukovanje tijelom odbijenog proxy odgovora. Zabilježite verziju OkHttp-a i konačnu razmjenu prije nego trenutni neuspjeh pripišete starom izvještaju. Odluka o ponavljanju i dalje treba zaustaviti nepromijenjen pokušaj akreditacija koji nema koristan novi odgovor.

Povezani članci