Skonfiguruj proxy przekazujące w OkHttp, a następnie przekaż tego samego klienta do 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();

Ten fragment buduje warstwę transportową i instancję Retrofit. Przed build dodaj do tego buildera fabryki konwerterów i adapterów wywołań wymagane przez aplikację, a następnie utwórz interfejs usługi z tej instancji.

Utrzymuj baseUrl skierowany na rzeczywistą usługę API. Wstawienie tam URL-a proxy zmienia cel HTTP; nie konfiguruje negocjacji z proxy. Bazowy URL zachowuje też wymóg Retrofit dotyczący końcowego ukośnika. Dozwolony test publicznego API bez uwierzytelniania proxy może pobrać adres HTTP z listy proxy HTTP dla osobnego obiektu Proxy.

Jawny proxy OkHttp ma pierwszeństwo przed jego ProxySelector. Użyj go, gdy klient ma mieć stałego pośrednika. Aplikacje wymagające routingu zależnego od celu powinny raczej zaprojektować tę politykę przez obsługiwany selektor.

Jeśli interfejs usługi został już utworzony z innej instancji Retrofit, zbudowanie tej nowej instancji nie przenosi żądań starego interfejsu. Trzymaj skonfigurowanego klienta, instancję Retrofit i obiekt usługi na tej samej ścieżce budowania.

Dla proxy z uwierzytelnianiem OkHttp udostępnia proxyAuthenticator osobno od uwierzytelniacza celu. Skonfiguruj go w builderze OkHttp, gdy trzeba, a następnie przekaż gotowego klienta do Retrofit. Dla proxy z uwierzytelnianiem Basic użyj ograniczonej obsługi ponowień proxyAuthenticator.

Powiązane artykuły