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`.
No answers yet.
Inicia sesión para dejar una respuesta