تهيئة وكيل Retrofit عبر OkHttpClient
مرّر كائن OkHttpClient مهيأً إلى Retrofit مع إبقاء عنوان URL الأساسي لواجهة API موجهاً إلى الخدمة المقصودة.
هيّئ الوكيل الأمامي في 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.