Untuk proksi HTTP yang menawarkan pengesahan Basic, proxyAuthenticator OkHttp boleh memulangkan permintaan yang membawa kelayakan. Pulangkan null selepas percubaan kebenaran sudah ditolak, bukannya menghantar jawapan yang sama sekali lagi:

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

Lakaran ini menggunakan nilai akaun daripada konfigurasi rahsia aplikasi. Pengawal membenarkan percubaan awal dan menghentikan percubaan berulang. Ia melaksanakan Basic, bukan setiap skema yang mungkin diiklankan proksi; periksa cabaran sebelum memilih jawapan itu.

Jika hasil akhir masih 407, bandingkan proksi yang dipilih, skema yang diiklankan dan identiti akaun yang didokumenkan. Kata laluan yang ditolak, kaedah yang tidak disokong dan bentuk nama pengguna yang salah memerlukan pembetulan berbeza. Simpan pemerhatian itu dan status akhir dalam diagnostik yang disunting.

CONNECT mempunyai konteks panggil balik lain: OkHttp mendokumenkan cabaran pengesahan proksi preemptif sintetik sebelum membuka terowong. Kendalikan konteks itu mengikut API dan bukan menganggap setiap panggil balik ialah respons destinasi biasa.

authenticator yang berasingan adalah untuk pengesahan pelayan destinasi. Simpan kelayakannya berasingan daripada log masuk proksi; pencegat generik yang meletakkan kata laluan proksi pada setiap permintaan keluar boleh menghantarnya dalam skop yang salah.

Laporan sejarah juga menerangkan pepijat pelaksanaan, termasuk pengendalian badan respons proksi yang ditolak. Rekodkan versi OkHttp dan pertukaran akhir sebelum mengaitkan kegagalan semasa dengan laporan lama. Keputusan cubaan semula masih perlu menghentikan percubaan kelayakan yang tidak berubah yang tiada jawapan baharu yang berguna.

Artikel berkaitan