Ρύθμιση proxy για Retrofit μέσω OkHttpClient
Πέρνα ένα ρυθμισμένο OkHttpClient στο Retrofit κρατώντας τη βασική διεύθυνση URL του API στραμμένη στην υπηρεσία προορισμού.
Ρύθμισε το proxy προώθησης στο OkHttp και μετά πέρνα τον ίδιο client στο Retrofit:
import java.net.InetSocketAddress;
import java.net.Proxy;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
Proxy proxy = new Proxy(
Proxy.Type.HTTP,
new InetSocketAddress("proxy.example", 8080));
OkHttpClient http = new OkHttpClient.Builder()
.proxy(proxy)
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.example/")
.client(http)
.build();
Το απόσπασμα χτίζει το επίπεδο μεταφοράς και το στιγμιότυπο Retrofit. Πριν το build, πρόσθεσε σε αυτόν τον builder τα εργοστάσια μετατροπέων και προσαρμογέων κλήσεων που χρειάζεται η εφαρμογή και μετά δημιούργησε το interface της υπηρεσίας από αυτό το στιγμιότυπο.
Κράτησε το baseUrl στραμμένο στην πραγματική υπηρεσία API. Αν βάλεις εκεί τη διεύθυνση του proxy, αλλάζεις τον προορισμό HTTP· δεν ρυθμίζεις διαπραγμάτευση proxy. Η βασική διεύθυνση διατηρεί επίσης την απαίτηση του Retrofit για κάθετο στο τέλος. Μια επιτρεπτή δοκιμή δημόσιου API χωρίς έλεγχο ταυτότητας proxy μπορεί να πάρει διεύθυνση HTTP από τη λίστα HTTP proxy για το ξεχωριστό αντικείμενο Proxy.
Ένα ρητό proxy στο OkHttp υπερισχύει του ProxySelector του. Χρησιμοποίησέ το όταν ο client πρέπει να έχει σταθερό μεσολαβητή. Οι εφαρμογές που χρειάζονται δρομολόγηση ανάλογα με τον προορισμό καλύτερα να σχεδιάζουν αυτή την πολιτική μέσω του υποστηριζόμενου selector.
Αν το interface της υπηρεσίας έχει ήδη δημιουργηθεί από άλλο στιγμιότυπο Retrofit, το χτίσιμο του νέου στιγμιότυπου δεν μεταφέρει τα αιτήματα του παλιού interface. Κράτησε τον ρυθμισμένο client, το στιγμιότυπο Retrofit και το αντικείμενο υπηρεσίας στην ίδια διαδρομή κατασκευής.
Για proxy με έλεγχο ταυτότητας, το OkHttp εκθέτει το proxyAuthenticator χωριστά από τον authenticator προορισμού. Ρύθμισέ το στον builder του OkHttp όταν χρειάζεται και μετά πέρνα τον έτοιμο client στο Retrofit. Για proxy με Basic έλεγχο ταυτότητας, χρησιμοποίησε περιορισμένη διαχείριση επαναλήψεων proxyAuthenticator.