تحديد عدد محاولات إعادة المحاولة في OkHttpClient
في OkHttpClient، لا توجد قيمة افتراضية لعدد محاولات إعادة المحاولة بعد فشل الاتصال. بدلاً من ذلك، يمكنك تعيين عدد محدد من محاولات إعادة المحاولة باستخدام setRetryOnConnectionFailure
، والتي تقوم بإعادة المحاولة عند فشل الاتصال. لإيقاف عملية المحاولة بعد عدد معين من المرات، يمكنك استخدام معالج تفاوض الاتصالات (ConnectionSpec
) لضبط الحد الأقصى لعدد محاولات إعادة المحاولة.
الطريقة الأكثر شيوعًا للقيام بذلك هي استخدام Dispatcher
لإنشاء OkHttpClient
وتعيين عدد محدد من محاولات إعادة المحاولة. إليك كيفية تعيين عدد محدد من محاولات إعادة المحاولة باستخدام Dispatcher
:
-
تقرير عدد كلمات موقع الويب الخارجي25/03/2024
javaDispatcher dispatcher = new Dispatcher();
dispatcher.setMaxRequests(1); // تحديد عدد المحاولات
dispatcher.setMaxRequestsPerHost(1); // تحديد عدد المحاولات لكل مضيف
OkHttpClient client = new OkHttpClient.Builder()
.dispatcher(dispatcher)
.build();
في هذا المثال، تم تعيين setMaxRequests
و setMaxRequestsPerHost
إلى 1 للحد من عدد المحاولات إلى محاولة واحدة فقط. يمكنك تعيينها إلى قيمة أكبر إذا كنت ترغب في محاولة المزيد من المحاولات.
يرجى ملاحظة أنه يجب استخدام Dispatcher
في OkHttpClient
الخاص بك بدلاً من تعيين RetryOnConnectionFailure
مباشرة.
المزيد من المعلومات
في OkHttpClient، يمكنك أيضًا استخدام RetryOnConnectionFailure
لتحديد ما إذا كان يجب إعادة المحاولة عند فشل الاتصال. إذا كنت ترغب في تعيين عدد محدد من محاولات إعادة المحاولة، فيجب عليك تعيين قيمة RetryOnConnectionFailure
إلى true
واستخدام Dispatcher
كما هو موضح في المثال السابق.
إذا كنت ترغب في تحديد عدد محدد من محاولات إعادة المحاولة بناءً على حالات معينة، يمكنك استخدام معالج تفاوض الاتصالات (ConnectionSpec
) لذلك. يمكنك إنشاء معالج تفاوض الاتصال الخاص بك وتعيينه إلى OkHttpClient باستخدام connectionSpecs
، ويمكنك تعيين عدد محدد من محاولات إعادة المحاولة لكل معالج تفاوض الاتصال الفردي. إليك مثالًا بسيطًا:
javaConnectionSpec spec = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
.retryOnConnectionFailure(true)
.build();
OkHttpClient client = new OkHttpClient.Builder()
.connectionSpecs(Collections.singletonList(spec))
.build();
في هذا المثال، يتم تحديد عدد المحاولات إلى 3 لمعالج تفاوض الاتصال الحديثة فقط. يمكنك تعيين ConnectionSpec
لكل نوع من أنواع التفاوض (MODERN_TLS
, COMPATIBLE_TLS
, CLEARTEXT
) وتعيين عدد محدد من محاولات إعادة المحاولة لكل منها بناءً على احتياجاتك.
هذه الطرق تسمح لك بتحديد عدد محدد من محاولات إعادة المحاولة بطرق مختلفة بناءً على حالتك الخاصة واحتياجاتك.