استفاده مجدد از منابع OkHttp هنگام انتخاب پروکسی متفاوت
پیش از ایجاد فراخوانی، یک کلاینت OkHttp پیکربندیشده با پروکسی انتخاب کنید و بدانید newBuilder چه چیزی را به اشتراک میگذارد.
درخواست OkHttp فیلد پروکسی تغییرپذیر عمومی ندارد. پیش از ایجاد فراخوانی آن، کلاینت دارای مسیر موردنظر را انتخاب کنید.
وقتی بقیهٔ پیکربندی باید مشترک بماند، کلاینت مسیریابیشده را از یک کلاینت موجود مشتق کنید:
OkHttpClient routed = baseClient.newBuilder()
.proxy(new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("203.0.113.10", 8080)))
.build();نقطهٔ پایانی تنها نمونه است. نقاط پایانی عمومی HTTP از فهرست پروکسی HTTP میتوانند این نشانی سوکت را برای یک مسیر مجاز سرویس عمومی پر کنند، به شرط آنکه سیاست کلاینت پایه هیچ اعتبارنامهٔ پروکسی به نقطهٔ پایانی جدید ندهد. OkHttp مستند میکند که newBuilder منابع استخر اتصال و رشته را با کلاینت اصلی به اشتراک میگذارد. این به معنای آن نیست که سوکتی که از طریق یک پروکسی برقرار شده میتواند بهعنوان مسیری دیگر برچسبگذاری شود. واجد شرایط بودن اتصال همچنان به پیکربندی مسیر و نشانی بستگی دارد.
برای کار تکراری، مجموعهای محدود از کلاینتها را نگه دارید که با سیاست مسیریابی موردنیاز واقعی شما کلید خوردهاند. از نگاشت نامحدودی که کلیدهایش شامل هر حساب موقت یا هر تغییر پروکسی مشاهدهشده باشد بپرهیزید.
اشتراک منابع بر خاموشسازی نیز اثر میگذارد. بستن یک حافظهٔ پنهان مشترک یا خاموش کردن یک توزیعکنندهٔ مشترک میتواند کلاینتهای مشتقشدهٔ دیگری را که از آن منابع استفاده میکنند تحت تأثیر قرار دهد. به مالکیت منابع عمری روشن در سطح برنامه بدهید، بهجای آنکه هر کلاینت مشتقشده را پشتهٔ شبکهای جداگانه بدانید.
در پایان، هویت پروکسی انتخابشده را در فرادادهٔ خود فراخوانی بگنجانید. متغیر سراسری «آخرین پروکسی انتخابشده» نمیتواند مسیر چندین درخواست همزمان را شناسایی کند.