Nakonfigurujte dopredné proxy v OkHttp a potom odovzdajte toho istého 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();

Tento úryvok zostaví transportnú vrstvu a inštanciu Retrofit. Pred build pridajte do tohto buildera továrne konvertorov a adaptérov volaní, ktoré aplikácia potrebuje, a potom z tejto inštancie vytvorte rozhranie služby.

Ponechajte baseUrl smerujúce na skutočnú službu API. Ak tam vložíte URL proxy, zmeníte cieľ HTTP; nenastaví to vyjednávanie s proxy. Základný URL tiež zachováva požiadavku Retrofit na koncovú lomku. Povolený test verejného API bez autentizácie proxy môže prevziať HTTP adresu zo zoznamu HTTP proxy pre samostatný objekt Proxy.

Explicitné proxy v OkHttp má prednosť pred svojím ProxySelectorom. Použite to, keď má mať klient pevného sprostredkovateľa. Aplikácie, ktoré potrebujú smerovanie závislé od cieľa, by mali túto politiku navrhnúť cez podporovaný selektor.

Ak bolo rozhranie služby už vytvorené z inej inštancie Retrofit, zostavenie tejto novej inštancie nepresunie požiadavky starého rozhrania. Udržujte nakonfigurovaného klienta, inštanciu Retrofit a objekt služby na rovnakej ceste zostavenia.

Pre proxy s autentizáciou OkHttp sprístupňuje proxyAuthenticator oddelene od autentifikátora cieľa. Nastavte ho v builderi OkHttp, keď treba, a potom odovzdajte hotového klienta do Retrofit. Pre proxy s autentizáciou Basic použite obmedzené spracovanie opakovaní proxyAuthenticatora.

Súvisiace články