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