پروکسی ارسال را در 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 معطوف نگه دارید. اگر نشانی پروکسی را آن‌جا بگذارید، مقصد HTTP را تغییر می‌دهید؛ این کار مذاکره پروکسی را پیکربندی نمی‌کند. نشانی پایه همچنین الزام Retrofit به اسلش پایانی را حفظ می‌کند. یک آزمون مجاز روی API عمومی بدون احراز هویت پروکسی می‌تواند نشانی HTTP را از فهرست پروکسی‌های HTTP برای شیء Proxy جداگانه بردارد.

پروکسی صریح OkHttp بر ProxySelector آن اولویت دارد. وقتی کلاینت باید واسطه ثابت داشته باشد از این استفاده کنید. برنامه‌هایی که به مسیریابی وابسته به مقصد نیاز دارند بهتر است آن سیاست را از طریق انتخابگر پشتیبانی‌شده طراحی کنند.

اگر رابط سرویس پیش‌تر از نمونه Retrofit دیگری ساخته شده باشد، ساختن این نمونه جدید درخواست‌های رابط قدیمی را جابه‌جا نمی‌کند. کلاینت پیکربندی‌شده، نمونه Retrofit و شیء سرویس را در یک مسیر ساخت نگه دارید.

برای پروکسی دارای احراز هویت، OkHttp ویژگی proxyAuthenticator را جدا از احرازگر مقصد ارائه می‌دهد. در صورت نیاز آن را روی سازنده OkHttp پیکربندی کنید و سپس کلاینت کامل را به Retrofit بدهید. برای پروکسی با احراز هویت Basic از مدیریت محدود تلاش مجدد proxyAuthenticator استفاده کنید.

مقالات مرتبط