I wrote this code in Kotlin to download some API information using Coroutines for downloading the data. However, the code shows a lot of warnings stating the message as "Inappropriate blocking method call".
Here's the code:
class DownloadInfoClass {
private lateinit var url: URL
private lateinit var httpURLConnection: HttpURLConnection
private lateinit var result: String
private lateinit var inputStream: InputStream
private lateinit var inputStreamReader: InputStreamReader
private var dataMap: MutableMap<String, Any> = mutableMapOf()
private fun downloadMethod(urls: String){
CoroutineScope(IO).launch {
try {
url = URL(urls)
httpURLConnection = url.openConnection() as HttpURLConnection
inputStream = httpURLConnection.inputStream
inputStreamReader = InputStreamReader(inputStream)
var data: Int = inputStreamReader.read()
while (data != -1){
val current: Char = data.toChar()
result += current
data = inputStreamReader.read()
}
}
catch (e: Exception){
e.printStackTrace()
}
}
Log.i("Result: ", result)
}
}
The specific areas where this problem occurs is:
URL(urls)
openConnection()
read()
Can anyone help me understand why this occurs? I read through the Kotlin documentation but I wasn't able to comprehend. Also, could you tell me how to fix this issue?