Retrofit проксиін OkHttpClient арқылы конфигурациялау
Конфигурацияланған OkHttpClient-ті Retrofit-ке беріп, API негізгі URL-ін мақсатты қызметке бағытталған күйде ұстаңыз.
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 сынағы бөлек Proxy нысаны үшін HTTP прокси тізімінен HTTP мекенжайын ала алады.
OkHttp-тің нақты проксиі өзінің ProxySelector-інен басым. Клиентте тұрақты делдал болуы керек болса, осыны қолданыңыз. Мақсатқа тәуелді маршруттау қажет қосымшалар бұл саясатты қолдау көрсетілетін селектор арқылы жобалағаны жөн.
Егер қызмет интерфейсі бұрын басқа Retrofit данасынан жасалған болса, бұл жаңа дананы құру ескі интерфейстің сұрауларын жылжытпайды. Конфигурацияланған клиентті, Retrofit данасын және қызмет нысанын бір құрылыс жолында ұстаңыз.
Аутентификациясы бар прокси үшін OkHttp proxyAuthenticator-ды мақсат аутентификаторынан бөлек ұсынады. Қажет болса, оны OkHttp құрастырушысында конфигурациялаңыз, содан кейін дайын клиентті Retrofit-ке өткізіңіз. Basic аутентификациясы бар прокси үшін proxyAuthenticator қайталауларын шектеулі өңдеуді қолданыңыз.