Osnovna proxy autentifikacija u OkHttp-u: zaustavite odbijena ponavljanja
Koristite OkHttp proxyAuthenticator za proxy izazove i zaustavite ponavljanje nepromijenjenog pokušaja autorizacije.
Za HTTP proxy koji nudi osnovnu autentifikaciju, OkHttp proxyAuthenticator može vratiti zahtev sa akreditive. Vratite null nakon što je pokušaj autorizacije već odbijen, umesto 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 vrednosti računa iz tajne konfiguracije aplikacije. Zaštita dozvoljava početni pokušaj i zaustavlja ponovljeni. Implementira Basic, ne svaku šemu koju proxy može najaviti; pregledajte izazov pre 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 zahtevaju 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 pre otvaranja tunela. Obradite taj kontekst u skladu s API-jem umesto da pretpostavite da je svaki poziv običan odgovor odredišta.
Odvojeni authenticator je za autentifikaciju na odredišnom serveru. Držite njegove akreditive odvojeno od proxy prijave; generički interceptor koji stavlja proxy lozinku u svaki odlazni zahtev može je poslati u pogrešan obim.
Istorijski izveštaji takođe opisuju greške u implementaciji, uključujući rukovanje telom odbijenog proxy odgovora. Zabeležite verziju OkHttp-a i konačnu razmenu pre nego trenutni neuspeh pripišete starom izveštaju. Odluka o ponavljanju i dalje treba da zaustavi nepromenjen pokušaj akreditiva koji nema koristan novi odgovor.