Permintaan OkHttp tidak memiliki bidang proksi yang dapat diubah secara umum. Pilih klien dengan rute yang dimaksud sebelum membuat panggilannya.

Ketika sisa konfigurasi harus tetap dibagikan, turunkan klien yang dirutekan dari klien yang sudah ada:

OkHttpClient routed = baseClient.newBuilder()
    .proxy(new Proxy(Proxy.Type.HTTP,
        new InetSocketAddress("203.0.113.10", 8080)))
    .build();

Titik akhir tersebut hanyalah ilustrasi. Titik akhir HTTP publik dari daftar proksi HTTP dapat mengisi alamat soket ini untuk rute layanan publik yang diizinkan, asalkan kebijakan klien dasar tidak memberikan kredensial proksi apa pun kepada titik akhir baru. OkHttp mendokumentasikan bahwa newBuilder membagikan sumber daya kumpulan koneksi dan thread dengan klien asli. Itu tidak berarti soket yang dibuat melalui satu proksi dapat dilabeli ulang sebagai rute lain. Kelayakan koneksi tetap bergantung pada konfigurasi rute dan alamat.

Untuk pekerjaan berulang, pertahankan kumpulan klien terbatas yang dikunci berdasarkan kebijakan perutean yang benar-benar Anda butuhkan. Hindari peta tak terbatas yang kuncinya memuat setiap akun sementara atau variasi proksi yang pernah terlihat.

Berbagi sumber daya juga memengaruhi penghentian. Menutup cache bersama atau mematikan pengirim bersama dapat memengaruhi klien turunan lain yang menggunakan sumber daya tersebut. Berikan kepemilikan sumber daya masa hidup tingkat aplikasi yang jelas alih-alih memperlakukan setiap klien turunan sebagai tumpukan jaringan yang terisolasi.

Terakhir, sertakan identitas proksi yang dipilih dalam metadata panggilan itu sendiri. Variabel global “proksi terakhir yang dipilih” tidak dapat mengidentifikasi rute beberapa permintaan bersamaan.

Artikel terkait