OkHttpClient کے ذریعے Retrofit پراکسی کنفیگر کریں
Retrofit کو کنفیگر شدہ OkHttpClient دیں اور API کا بنیادی URL ہدف سروس کی طرف ہی رکھیں۔
OkHttp پر فارورڈ پراکسی کنفیگر کریں، پھر وہی کلائنٹ 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();
یہ حصہ ٹرانسپورٹ لیئر اور Retrofit انسٹنس بناتا ہے۔ build سے پہلے ایپلیکیشن کے لیے ضروری کنورٹر اور کال-اڈاپٹر فیکٹریاں اس بلڈر میں شامل کریں، پھر اس انسٹنس سے اس کا سروس انٹرفیس بنائیں۔
baseUrl کو اصل API سروس کی طرف ہی رکھیں۔ وہاں پراکسی URL رکھنے سے HTTP ہدف بدل جاتا ہے؛ اس سے پراکسی گفت و شنید کنفیگر نہیں ہوتی۔ بنیادی URL Retrofit کی آخری سلیش کی شرط بھی برقرار رکھتا ہے۔ پراکسی تصدیق کے بغیر اجازت شدہ عوامی API ٹیسٹ الگ Proxy آبجیکٹ کے لیے HTTP پراکسی فہرست سے HTTP پتہ لے سکتا ہے۔
OkHttp کی واضح پراکسی اپنے ProxySelector پر فوقیت رکھتی ہے۔ یہ تب استعمال کریں جب کلائنٹ کے پاس مستقل واسطہ ہونا چاہیے۔ ہدف پر منحصر روٹنگ چاہنے والی ایپلیکیشنز کو یہ پالیسی معاون سلیکٹر کے ذریعے ڈیزائن کرنی چاہیے۔
اگر سروس انٹرفیس پہلے ہی کسی دوسرے Retrofit انسٹنس سے بنا ہے تو یہ نیا انسٹنس بنانے سے پرانے انٹرفیس کی درخواستیں نہیں ہٹتیں۔ کنفیگر شدہ کلائنٹ، Retrofit انسٹنس اور سروس آبجیکٹ ایک ہی تعمیری راستے پر رکھیں۔
تصدیق والی پراکسی کے لیے OkHttp proxyAuthenticator کو اپنے ہدف مصدق سے الگ پیش کرتا ہے۔ ضرورت پر اسے OkHttp بلڈر پر کنفیگر کریں، پھر مکمل کلائنٹ Retrofit کو دیں۔ Basic تصدیق والی پراکسی کے لیے محدود proxyAuthenticator دوبارہ کوشش ہینڈلنگ استعمال کریں۔