Configureer de forward-proxy op OkHttp en geef vervolgens dezelfde client aan 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();

Dit fragment bouwt de transportlaag en de Retrofit-instantie. Voeg vóór build de converter- en call-adapterfabrieken toe die de applicatie nodig heeft aan deze builder en maak daarna de service-interface vanuit deze instantie.

Houd baseUrl naar de echte API-dienst wijzen. Zet je daar de proxy-URL, dan wijzig je de HTTP-bestemming; dat configureert geen proxy-onderhandeling. De basis-URL behoudt ook Retrofits eis van een afsluitende schuine streep. Een toegestane test van een openbare API zonder proxy-authenticatie kan een HTTP-adres uit de lijst met HTTP-proxy’s nemen voor het aparte Proxy-object.

Een expliciete OkHttp-proxy heeft voorrang op zijn ProxySelector. Gebruik dit wanneer de client een vaste tussenpersoon moet hebben. Applicaties die routering op basis van de bestemming nodig hebben, kunnen dat beleid beter via de ondersteunde selector ontwerpen.

Als de service-interface al vanuit een andere Retrofit-instantie is gemaakt, verplaatst het bouwen van deze nieuwe instantie de verzoeken van de oude interface niet. Houd de geconfigureerde client, de Retrofit-instantie en het service-object op hetzelfde constructiepad.

Voor een geauthenticeerde proxy stelt OkHttp de proxyAuthenticator apart van zijn bestemmingsauthenticator beschikbaar. Configureer die op de OkHttp-builder wanneer nodig en geef daarna de voltooide client aan Retrofit. Gebruik voor een proxy met Basic-authenticatie begrensde afhandeling van proxyAuthenticator-pogingen.

Gerelateerde artikelen