Konfigurera vidarebefordringsproxyn i OkHttp och ge sedan samma klient till 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();

Utdraget bygger transportlagret och Retrofit-instansen. Före build lägger du till de konverterar- och anropsadapterfabriker som applikationen behöver i den här byggaren och skapar sedan tjänstegränssnittet från den här instansen.

Låt baseUrl peka på den faktiska API-tjänsten. Sätter du proxy-URL:en där ändrar du HTTP-destinationen; det konfigurerar inte proxyförhandlingen. Bas-URL:en behåller också Retrofits krav på ett avslutande snedstreck. Ett tillåtet test av ett offentligt API utan proxyautentisering kan hämta en HTTP-adress från listan med HTTP-proxyer till det separata Proxy-objektet.

En explicit OkHttp-proxy har företräde framför sin ProxySelector. Använd det när klienten ska ha en fast mellanhand. Applikationer som behöver destinationsberoende routing bör hellre utforma den policyn via den stödda väljaren.

Om tjänstegränssnittet redan har skapats från en annan Retrofit-instans flyttar inte bygget av den nya instansen den gamla gränssnittets förfrågningar. Håll den konfigurerade klienten, Retrofit-instansen och tjänsteobjektet på samma byggväg.

För en proxy med autentisering exponerar OkHttp proxyAuthenticator separat från sin destinationsautentiserare. Konfigurera den på OkHttp-byggaren när det behövs och skicka sedan den färdiga klienten till Retrofit. För en proxy med Basic-autentisering, använd begränsad hantering av proxyAuthenticator-återförsök.

Relaterade artiklar