Mengonfigurasi Proksi Retrofit melalui OkHttpClient
Berikan OkHttpClient yang sudah dikonfigurasi ke Retrofit sambil membiarkan URL dasar API tetap menunjuk ke layanan tujuan.
Konfigurasikan proksi penerusan di OkHttp, lalu berikan klien yang sama ke 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();
Fragmen ini membangun lapisan transport dan instans Retrofit. Sebelum build, tambahkan pabrik konverter dan adaptor panggilan yang dibutuhkan aplikasi ke builder ini, lalu buat antarmuka layanannya dari instans ini.
Pertahankan baseUrl menunjuk ke layanan API yang sebenarnya. Jika URL proksi ditaruh di sana, tujuan HTTP berubah; itu tidak mengonfigurasi negosiasi proksi. URL dasar juga mempertahankan syarat Retrofit akan garis miring di akhir. Uji API publik yang diizinkan tanpa autentikasi proksi dapat mengambil alamat HTTP dari daftar proxy HTTP untuk objek Proxy terpisah.
Proksi OkHttp yang eksplisit lebih diutamakan daripada ProxySelector-nya. Gunakan ini ketika klien harus memakai perantara tetap. Aplikasi yang memerlukan perutean bergantung tujuan sebaiknya merancang kebijakan itu melalui pemilih yang didukung.
Jika antarmuka layanan sudah dibuat dari instans Retrofit lain, membangun instans baru ini tidak memindahkan permintaan antarmuka lama. Jaga klien yang dikonfigurasi, instans Retrofit, dan objek layanan pada jalur konstruksi yang sama.
Untuk proksi dengan autentikasi, OkHttp mengekspos proxyAuthenticator secara terpisah dari autentikator tujuan. Konfigurasikan pada builder OkHttp bila diperlukan, lalu berikan klien yang sudah selesai ke Retrofit. Untuk proksi dengan autentikasi Basic, gunakan penanganan percobaan ulang proxyAuthenticator yang terbatas.