Állítsd be a továbbító proxyt az OkHttp-ban, majd add át ugyanazt a klienst a Retrofitnek:

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();

Ez a részlet felépíti a szállítási réteget és a Retrofit-példányt. A build előtt add hozzá ehhez az építőhöz az alkalmazás által igényelt konverter- és hívásadapter-gyárakat, majd hozd létre a szolgáltatás interfészét ebből a példányból.

Tartsd a baseUrl-t a tényleges API-szolgáltatásra mutatva. Ha oda a proxy URL-jét teszed, megváltoztatod a HTTP-célt; ez nem állítja be a proxyegyeztetést. Az alap-URL megtartja a Retrofit záró perjelre vonatkozó követelményét is. Egy engedélyezett nyilvános API-teszt proxihitelesítés nélkül vehet HTTP-címet a HTTP-proxyk listájából a külön Proxy-objektumhoz.

Az explicit OkHttp-proxy elsőbbséget élvez a ProxySelectorával szemben. Akkor használd, amikor a kliensnek fix közvetítőre van szüksége. A céltól függő útválasztást igénylő alkalmazásoknak ezt a szabályt inkább a támogatott választón keresztül kellene kialakítaniuk.

Ha a szolgáltatás interfésze már egy másik Retrofit-példányból jött létre, az új példány felépítése nem mozgatja át a régi interfész kéréseit. Tartsd a beállított klienst, a Retrofit-példányt és a szolgáltatás objektumot ugyanazon az építési úton.

Hitelesített proxy esetén az OkHttp a proxyAuthenticatort a célhitelesítőjétől elkülönítve teszi elérhetővé. Szükség esetén állítsd be az OkHttp építőjén, majd add át a kész klienst a Retrofitnek. Basic hitelesítésű proxyhoz használd a korlátozott proxyAuthenticator-újrapróbálkozás-kezelést.

Kapcsolódó cikkek