Ошибка Inappropriate blocking method call при http запросе в Kotlin

Изучаю корутины и возник вопрос. Набросал простую функцию для получения данных из сети. Но в Intelij IDEA выделяет желтым URL(url).openConnection() и выводит предупреждение "Inappropriate blocking method call"

Пробовал вызывать так

runBlocking { 
    getHttp("http://link.ru")
}

Ставил модификатор suspend для fun main - один фиг выделяет. В чем ошибка?

suspend fun getHttp(url: String): String {
    var txt = ""
    withContext(Dispatchers.IO) {
        with(URL(url).openConnection() as HttpURLConnection) {
            try {
                txt = inputStream.bufferedReader().readText()
            } catch (e:Exception) {
                e.printStackTrace()
            }
        }
    }
    return txt
}


Ответы (1 шт):

Автор решения: Fox Code

Проблема в том, что Вы вызываете блокирующий HttpUrlConnection, и как правильно заметили в комментариях - вся суть использования корутин сходит на нет.

Решить данную проблему можно несколькими способами, либо использовав асинхронный клиент типа Retrofit, либо оборачивать блокирующий код в отдельный поток. По ссылке статья с подробным объяснением и решением.

→ Ссылка