Configurează proxy-ul de redirecționare în OkHttp, apoi furnizează același client lui 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();

Fragmentul construiește stratul de transport și instanța Retrofit. Înainte de build, adaugă la acest builder fabricile de convertoare și adaptoare de apel de care are nevoie aplicația, apoi creează interfața serviciului din această instanță.

Menține baseUrl îndreptat spre serviciul API real. Dacă pui acolo URL-ul proxy-ului, schimbi destinația HTTP; asta nu configurează negocierea cu proxy-ul. URL-ul de bază păstrează și cerința Retrofit privind bara finală. Un test permis pe un API public fără autentificare proxy poate lua o adresă HTTP din lista de proxy-uri HTTP pentru obiectul Proxy separat.

Un proxy OkHttp explicit are prioritate față de ProxySelector-ul său. Folosește-l când clientul trebuie să aibă un intermediar fix. Aplicațiile care au nevoie de rutare dependentă de destinație ar trebui să proiecteze acea politică prin selectorul acceptat.

Dacă interfața serviciului a fost deja creată dintr-o altă instanță Retrofit, construirea acestei instanțe noi nu mută cererile interfeței vechi. Ține clientul configurat, instanța Retrofit și obiectul serviciului pe același traseu de construire.

Pentru un proxy autentificat, OkHttp expune proxyAuthenticator separat de autentificatorul de destinație. Configurează-l pe builderul OkHttp când e necesar, apoi transmite clientul complet lui Retrofit. Pentru un proxy cu autentificare Basic, folosește gestionare limitată a reîncercărilor proxyAuthenticator.

Articole similare