Retrofit-välityspalvelimen määrittäminen OkHttpClientin kautta
Anna Retrofitille määritetty OkHttpClient ja pidä API:n perus-URL kohdepalveluun osoittavana.
Määritä eteenpäin välittävä välityspalvelin OkHttpissa ja anna sitten sama asiakas Retrofitille:
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();
Tämä katkelma rakentaa siirtokerroksen ja Retrofit-instanssin. Lisää tähän rakentajaan ennen build-kutsua sovelluksen tarvitsemat muunnin- ja kutsusovitintehtaat ja luo sitten palvelun rajapinta tästä instanssista.
Pidä baseUrl osoittamassa todelliseen API-palveluun. Jos laitat välityspalvelimen URL:n siihen, muutat HTTP-kohdetta; se ei määritä välityspalvelinneuvottelua. Perus-URL säilyttää myös Retrofitiin vaatiman loppukauttaviivan. Sallittu julkisen API:n testi ilman välityspalvelimen todennusta voi ottaa HTTP-osoitteen HTTP-välityspalvelinten luettelosta erilliselle Proxy-oliolle.
OkHttpin nimenomainen välityspalvelin ohittaa sen ProxySelectorin. Käytä tätä, kun asiakkaalla pitää olla kiinteä välittäjä. Sovellusten, jotka tarvitsevat kohteesta riippuvaa reititystä, kannattaa suunnitella se käytettävissä olevan valitsimen kautta.
Jos palvelun rajapinta on jo luotu toisesta Retrofit-instanssista, tämän uuden instanssin rakentaminen ei siirrä vanhan rajapinnan pyyntöjä. Pidä määritetty asiakas, Retrofit-instanssi ja palveluolio samalla rakennuspolulla.
Todennetulle välityspalvelimelle OkHttp tarjoaa proxyAuthenticatorin erillään kohdetodentajastaan. Määritä se OkHttp-rakentajaan tarvittaessa ja anna sitten valmis asiakas Retrofitille. Basic-todennusta käyttävälle välityspalvelimelle käytä rajattua proxyAuthenticatorin uudelleenyritysten käsittelyä.