OkHttp Basic proxy autentifikasiyası: rədd edilmiş təkrarları dayandırın
Proxy çağırışları üçün OkHttp-nin proxyAuthenticatorundan istifadə edin və dəyişməz avtorizasiya cəhdini təkrarlamağı dayandırın.
Basic autentifikasiya təklif edən HTTP proxy üçün OkHttp-nin proxyAuthenticator etimadnamələri daşıyan sorğu qaytara bilər. Avtorizasiya cəhdi artıq rədd edildikdən sonra eyni cavabı yenidən göndərmək əvəzinə null qaytarın:
.proxyAuthenticator { _, response ->
if (response.request.header("Proxy-Authorization") != null) {
null
} else {
response.request.newBuilder()
.header("Proxy-Authorization",
Credentials.basic(proxyUser, proxyPassword))
.build()
}
}
Bu eskiz tətbiqin məxfi konfiqurasiyasındakı hesab dəyərlərindən istifadə edir. Qoruyucu ilkin cəhdə icazə verir və təkrarı dayandırır. O, Basic-i tətbiq edir, proxy-nin elan edə biləcəyi hər sxemi deyil; bu cavabı seçməzdən əvvəl çağırışı yoxlayın.
Yekun nəticə 407 olaraq qalırsa, seçilmiş proxy-ni, elan edilmiş sxemi və sənədləşdirilmiş hesab kimliyini müqayisə edin. Rədd edilmiş parol, dəstəklənməyən üsul və yanlış istifadəçi adı forması fərqli düzəlişlər tələb edir. Bu müşahidələri və yekun statusu redaktə edilmiş diaqnostikada saxlayın.
CONNECT-in başqa bir callback konteksti var: OkHttp tuneli açmazdan əvvəl sintetik preemptive proxy autentifikasiya çağırışını sənədləşdirir. Hər callback-i adi təyinat cavabı kimi qəbul etmək əvəzinə bu konteksti API-yə uyğun idarə edin.
Ayrı authenticator təyinat serverinin autentifikasiyası üçündür. Onun etimadnamələrini proxy girişindən ayrı saxlayın; hər çıxan sorğuya proxy parolunu yerləşdirən ümumi interceptor onu yanlış əhatədə göndərə bilər.
Tarixi hesabatlar həmçinin rədd edilmiş proxy cavabının gövdəsinin emalı da daxil olmaqla tətbiq səhvlərini təsvir edir. Cari nasazlığı köhnə hesabata aid etməzdən əvvəl OkHttp versiyasını və yekun mübadiləni qeyd edin. Təkrar qərarı hələ də faydalı yeni cavabı olmayan dəyişməz etimadnamə cəhdini dayandırmalıdır.