Konfigurišite proksi za prosljeđivanje na OkHttp-u, a zatim taj isti klijent proslijedite u 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();

Ovaj isječak gradi transportni sloj i instancu Retrofit-a. Prije poziva build dodajte ovom graditelju tvornice konvertera i adaptera poziva koje aplikacija zahtijeva, a zatim iz ove instance stvorite interfejs usluge.

Držite baseUrl usmjeren na stvarnu API uslugu. Ako tu upišete URL proxyja, mijenjate HTTP odredište; to ne konfiguriše pregovaranje s proxyjem. Osnovni URL također zadržava Retrofitov zahtjev za završnom kosom crtom. Dopušteni test javnog API-ja bez autentifikacije proxyja može uzeti HTTP adresu sa liste HTTP proxyja za zasebni Proxy objekat.

Eksplicitni OkHttp proxy ima prednost nad svojim ProxySelectorom. Koristite to kada klijent treba da ima fiksnog posrednika. Aplikacije kojima je potrebno usmjeravanje zavisno od odredišta trebale bi tu politiku radije osmisliti kroz podržani selektor.

Ako je interfejs usluge već stvoren iz druge Retrofit instance, izgradnja ove nove instance ne prenosi zahtjeve starog interfejsa. Držite konfigurisani klijent, Retrofit instancu i objekat usluge na istom putu izgradnje.

Za proxy koji zahtijeva autentifikaciju OkHttp izlaže proxyAuthenticator odvojeno od autentifikatora odredišta. Konfigurišite ga na OkHttp graditelju kada je potrebno, a zatim proslijedite dovršeni klijent u Retrofit. Za proxy sa Basic autentifikacijom koristite ograničeno rukovanje ponovnim pokušajima proxyAuthenticatora.

Povezani članci