Конфигурирање на Retrofit прокси преку OkHttpClient
Предајте конфигуриран OkHttpClient на Retrofit, а основниот URL на API-то оставете го насочен кон целната услуга.
Конфигурирајте го проследниот прокси на OkHttp, потоа предајте го истиот клиент на 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 додајте ги на овој градител фабриките за конвертори и адаптери на повици што му се потребни на апликацијата, потоа создадете го интерфејсот на услугата од оваа инстанца.
Држете го baseUrl насочен кон вистинската API услуга. Ако таму го ставите URL-от на проксито, го менувате HTTP одредиштето; тоа не конфигурира преговарање со прокси. Основниот URL исто така го задржува барањето на Retrofit за завршна коса црта. Дозволен тест на јавен API без автентикација на прокси може да земе HTTP адреса од листата со HTTP прокси-сервери за одделниот Proxy објект.
Експлицитното OkHttp прокси има предност пред неговиот ProxySelector. Користете го кога клиентот треба да има фиксен посредник. Апликациите што бараат рутирање зависно од одредиштето подобро е таа политика да ја дизајнираат преку поддржаниот селектор.
Ако интерфејсот на услугата веќе е создаден од друга Retrofit инстанца, градењето на оваа нова инстанца не ги преместува барањата на стариот интерфејс. Држете го конфигурираниот клиент, Retrofit инстанцата и објектот на услугата на истата патека на градење.
За прокси со автентикација OkHttp го изложува proxyAuthenticator одделно од автентикаторот на одредиштето. Конфигурирајте го на OkHttp градителот кога е потребно, потоа предајте го готовиот клиент на Retrofit. За прокси со Basic автентикација користете ограничено справување со повторни обиди на proxyAuthenticator.