Retrofit-proxy beállítása OkHttpClienten keresztül
Adj át egy beállított OkHttpClientet a Retrofitnek, miközben az API alap-URL-je továbbra is a célzott szolgáltatásra mutat.
Á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.