Avatar ·

كيفية إصلاح الخطأ "Inappropriate blocking method call" في OkHttp و coroutines في Kotlin؟

مرحباً! أنا مطور مبتدئ في Kotlin وأحاول عمل طلب HTTP باستخدام OkHttp داخل Coroutine. لدي هذا الكود: ```kotlin suspend fun fetchData(): String { val client = OkHttpClient() val request = Request.Builder() .url("https://api.example.com/data") .build() val response = client.newCall(request).execute() // هنا الخطأ! return response.body?.string() ?: "" } ``` لكن المترجم أو أداة التحليل (Detekt, IntelliJ IDEA) تعطي تحذيراً: "Inappropriate blocking method call". أنا أستخدم Coroutines للعمل غير المتزامن، لكن طريقة `execute()` تمنع تنفيذ الخيط الحالي. كيف يمكنني عمل طلب HTTP بشكل صحيح في Coroutine دون منع الخيط؟ سمعت عن `suspendCancellableCoroutine` لكنني لا أفهم كيفية تطبيقه. كما أنني أستخدم Moshi لتحليل JSON. أرجو المساعدة في الفهم. المشكلة: أريد الحفاظ على العمل غير المتزامن لـ Coroutines، لكن OkHttp بشكل افتراضي يقدم فقط `execute()` المتزامن أو `enqueue` باستخدام callback.