Basic kimlik doğrulaması sunan bir HTTP proxy için OkHttp'nin proxyAuthenticator kimlik bilgileri taşıyan bir istek döndürebilir. Bir yetkilendirme denemesi zaten reddedildikten sonra aynı yanıtı yeniden göndermek yerine null döndürün:

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

Bu taslak, uygulamanın gizli yapılandırmasındaki hesap değerlerini kullanır. Koruma ilk denemeye izin verir ve tekrarlananı durdurur. Basic'i uygular, bir proxy'nin duyurabileceği her şemayı değil; o yanıtı seçmeden önce meydan okumayı inceleyin.

Nihai sonuç hâlâ 407 ise seçilen proxy'yi, duyurulan şemayı ve belgelenmiş hesap kimliğini karşılaştırın. Reddedilen parola, desteklenmeyen yöntem ve yanlış kullanıcı adı biçimi farklı düzeltmeler gerektirir. Bu gözlemleri ve nihai durumu redakte edilmiş tanılamalarda saklayın.

CONNECT'in başka bir geri çağırma bağlamı vardır: OkHttp tüneli açmadan önce sentetik bir önleyici proxy kimlik doğrulama meydan okuması belgeler. Her geri çağırmanın sıradan bir hedef yanıtı olduğunu varsaymak yerine bu bağlamı API'ye göre ele alın.

Ayrı authenticator hedef sunucu kimlik doğrulaması içindir. Kimlik bilgilerini proxy oturum açmasından ayrı tutun; her giden isteğe proxy parolası koyan genel bir ara katman bunu yanlış kapsamda gönderebilir.

Tarihsel raporlar, reddedilen proxy yanıt gövdesinin işlenmesi de dahil olmak üzere uygulama hatalarını da açıklar. Güncel bir hatayı eski bir rapora bağlamadan önce OkHttp sürümünü ve son alışverişi kaydedin. Yeniden deneme kararı, yararlı yeni bir yanıtı olmayan değişmemiş bir kimlik bilgisi denemesini yine de durdurmalıdır.

İlgili makaleler