Apache HttpClient 4.2: κρατήστε το Proxy AuthCache στο πλαίσιο του αιτήματος
Διατηρήστε μια προσωρινή μνήμη Basic auth του διαμεσολαβητή του HttpClient 4.2 στο ίδιο πλαίσιο εκτέλεσης που χρησιμοποιούν τα επόμενα αιτήματα.
Σε μια παλιά εφαρμογή HttpClient 4.2.2, ένας πάροχος διαπιστευτηρίων και μια προσωρινή μνήμη ελέγχου ταυτότητας κάνουν διαφορετικές δουλειές. Ο πάροχος παρέχει τον λογαριασμό· η μνήμη επιτρέπει σε ένα σκόπιμα προρυθμισμένο σχήμα ελέγχου ταυτότητας να συμμετάσχει πριν φτάσει άλλη πρόκληση.
Για τον παλιό κατασκευαστή BasicScheme που αφορά τον διαμεσολαβητή, η παράδοση μοιάζει έτσι:
AuthCache cache = new BasicAuthCache();
cache.put(proxy, new BasicScheme(ChallengeState.PROXY));
HttpContext context = new BasicHttpContext();
context.setAttribute(ClientContext.AUTH_CACHE, cache);
HttpResponse response = client.execute(request, context);Αυτό το απόσπασμα υποθέτει ότι ο client έχει ήδη τη σωστή διαδρομή μέσω διαμεσολαβητή και τον πάροχο διαπιστευτηρίων. Το proxy είναι το HttpHost του και το request είναι η πραγματική πράξη. Το κλειδί της μνήμης πρέπει να περιγράφει αυτόν τον μεσολαβητή, όχι τον ιστότοπο προορισμού.
Περάστε το γεμάτο πλαίσιο στο execute. Αν το χτίσετε και μετά χρησιμοποιήσετε μια υπερφόρτωση που δημιουργεί άλλο πλαίσιο, η μνήμη μένει έξω από την ανταλλαγή. Για επόμενες πράξεις που πρέπει να μοιράζονται αυτή την κατάσταση ελέγχου ταυτότητας, κρατήστε το κατάλληλο πλαίσιο αντί να ξαναχτίζετε ένα κενό κάθε φορά.
Η ρητή κατάσταση PROXY ανήκει σε αυτό το παλαιότερο API. Το TARGET αφορά τον έλεγχο ταυτότητας προορισμού. Νεότερες γενιές HttpClient άλλαξαν πακέτα και API ελέγχου ταυτότητας, οπότε χρησιμοποιήστε το ως οδηγία συντήρησης για υπάρχοντα κώδικα 4.2 και όχι ως συνταγή για νέο client.
Μια κανονική ανταλλαγή που οδηγείται από πρόκληση μπορεί να είναι ακόμη σωστή. Σπείρετε Basic έλεγχο ταυτότητας μόνο για γνωστό επιδιωκόμενο διαμεσολαβητή, και καταναλώστε ή απελευθερώστε κάθε απάντηση πριν η επόμενη πράξη χρειαστεί τη σύνδεσή της. Το χρήσιμο αποτέλεσμα είναι λογαριασμός και αποθηκευμένο σχήμα συνδεδεμένα με την εκτέλεση που στέλνει πραγματικά το αίτημα.