Για έναν διαμεσολαβητή HTTP που προσφέρει βασική πιστοποίηση, το proxyAuthenticator του OkHttp μπορεί να επιστρέψει ένα αίτημα που φέρει διαπιστευτήρια. Επιστρέψτε null αφού μια απόπειρα εξουσιοδότησης έχει ήδη απορριφθεί, αντί να στείλετε ξανά την ίδια απάντηση:

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

Αυτό το σκίτσο χρησιμοποιεί τιμές λογαριασμού από τη μυστική διαμόρφωση της εφαρμογής. Η φρουρά επιτρέπει μια αρχική απόπειρα και σταματά μια επαναλαμβανόμενη. Υλοποιεί το Basic, όχι κάθε σχήμα που μπορεί να διαφημίσει ένας διαμεσολαβητής· εξετάστε την πρόκληση πριν επιλέξετε αυτή την απάντηση.

Αν το τελικό αποτέλεσμα παραμένει 407, συγκρίνετε τον επιλεγμένο διαμεσολαβητή, το διαφημιζόμενο σχήμα και τη τεκμηριωμένη ταυτότητα λογαριασμού. Ένας απορριφθείς κωδικός, μια μη υποστηριζόμενη μέθοδος και μια εσφαλμένη μορφή ονόματος χρήστη χρειάζονται διαφορετικές διορθώσεις. Κρατήστε αυτές τις παρατηρήσεις και την τελική κατάσταση σε επεξεργασμένα διαγνωστικά.

Το CONNECT έχει άλλο πλαίσιο επανάκλησης: το OkHttp τεκμηριώνει μια συνθετική προληπτική πρόκληση πιστοποίησης διαμεσολαβητή πριν ανοίξει το τούνελ. Χειριστείτε αυτό το πλαίσιο σύμφωνα με το API αντί να υποθέσετε ότι κάθε επανάκληση αντιπροσωπεύει μια συνηθισμένη απάντηση προορισμού.

Το ξεχωριστό authenticator είναι για πιστοποίηση διακομιστή προορισμού. Κρατήστε τα διαπιστευτήριά του ξεχωριστά από τη σύνδεση διαμεσολαβητή· ένας γενικός μεσολαβητής που τοποθετεί κωδικό διαμεσολαβητή σε κάθε εξερχόμενο αίτημα μπορεί να τον στείλει σε λάθος εύρος.

Ιστορικές αναφορές περιγράφουν επίσης σφάλματα υλοποίησης, συμπεριλαμβανομένου του χειρισμού σώματος απορριφθείσας απάντησης διαμεσολαβητή. Καταγράψτε την έκδοση OkHttp και την τελική ανταλλαγή πριν αποδώσετε μια παρούσα αποτυχία σε μια παλιά αναφορά. Η απόφαση επανάληψης θα πρέπει ακόμη να σταματά μια αμετάβλητη απόπειρα διαπιστευτηρίων που δεν έχει χρήσιμη νέα απάντηση.

Σχετικά άρθρα