Configurer un proxy Retrofit via OkHttpClient
Fournissez un OkHttpClient configuré à Retrofit tout en laissant l’URL de base de l’API pointer vers le service de destination.
Configurez le proxy sortant sur OkHttp, puis fournissez ce même 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();
L’extrait construit la couche de transport et l’instance Retrofit. Avant build, ajoutez à ce constructeur les fabriques de convertisseurs et d’adaptateurs d’appels dont l’application a besoin, puis créez son interface de service à partir de cette instance.
Laissez baseUrl pointé vers le service API réel. Si vous y placez l’URL du proxy, vous changez la destination HTTP ; cela ne configure pas la négociation avec le proxy. L’URL de base conserve aussi l’exigence de Retrofit d’une barre oblique finale. Un test autorisé sur une API publique sans authentification proxy peut prendre une adresse HTTP dans la liste de proxys HTTP pour l’objet Proxy distinct.
Un proxy OkHttp explicite a priorité sur son ProxySelector. Utilisez-le lorsque le client doit disposer d’un intermédiaire fixe. Les applications qui ont besoin d’un routage dépendant de la destination devraient plutôt concevoir cette politique via le sélecteur pris en charge.
Si l’interface de service a déjà été créée à partir d’une autre instance Retrofit, construire cette nouvelle instance ne déplace pas les requêtes de l’ancienne interface. Gardez le client configuré, l’instance Retrofit et l’objet de service sur le même chemin de construction.
Pour un proxy authentifié, OkHttp expose proxyAuthenticator séparément de son authentificateur de destination. Configurez-le sur le constructeur OkHttp si nécessaire, puis passez le client terminé à Retrofit. Pour un proxy à authentification Basic, utilisez une gestion bornée des nouvelles tentatives de proxyAuthenticator.