Avatar ·

Cómo corregir el error "Inappropriate blocking method call" en OkHttp y coroutines de Kotlin

¡Hola! Soy un desarrollador principiante en Kotlin y estoy intentando hacer una solicitud HTTP con OkHttp dentro de una coroutine. Tengo este código: ```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() // ¡Aquí está el error! return response.body?.string() ?: "" } ``` Pero el compilador o linter (Detekt, IntelliJ IDEA) muestra la advertencia: "Inappropriate blocking method call". Estoy usando coroutines para la asincronía, pero el método `execute()` bloquea el hilo actual. ¿Cómo puedo hacer una solicitud HTTP correctamente en una coroutine sin bloquear el hilo? He oído hablar de `suspendCancellableCoroutine`, pero no entiendo cómo aplicarlo. También uso Moshi para parsear JSON. Ayúdenme a entenderlo, por favor. Problema: quiero mantener la asincronía de las coroutines, pero OkHttp por defecto solo ofrece el `execute()` síncrono o el callback `enqueue`.