Sobes.tech
Junior

Kas kasutas Androidis võrgupäringute rakendamiseks sisseehitatud lahendusi?

sobes.tech AI

Vastus AI-lt

// HttpURLConnection kasutamise näide
fun fetchDataFromNetwork(): String {
    var result = ""
    var connection: HttpURLConnection? = null
    try {
        val url = URL("https://api.example.com/data")
        connection = url.openConnection() as HttpURLConnection
        connection.requestMethod = "GET"
        connection.connectTimeout = 5000
        connection.readTimeout = 5000

        if (connection.responseCode == HttpURLConnection.HTTP_OK) {
            val inputStream = connection.inputStream
            val reader = BufferedReader(InputStreamReader(inputStream))
            val stringBuilder = StringBuilder()
            var line: String?
            while (reader.readLine().also { line = it } != null) {
                stringBuilder.append(line).append("\n")
            }
            result = stringBuilder.toString()
        }
    } catch (e: Exception) {
        // Viga käsitlus
        e.printStackTrace()
    } finally {
        connection?.disconnect()
    }
    return result
}

Jah, kasutasin. HttpURLConnection kasutamine hõlmas põhilist GET/POST päringute saatmist ja andmete saamist voogude kaudu. Samuti kasutasin URL klassi URL-i analüüsimiseks ja koostamiseks.

Raskematel juhtudel, näiteks failide allalaadimisel või andmete saatmisel vormina, tuli käsitsi hallata sisend-/väljundvooge ja lisada vastavaid päiseid.

HttpURLConnection peamine eelis on selle integreeritus Android SDK-ga, mis välistab vajaduse lisada kolmanda osapoole sõltuvusi. Kuid selle kasutamine nõuab rohkem boilerplate-koodi, eriti asünkroonsete operatsioonide ja vastuste töötlemise puhul. Enamasti kasutasin AsyncTask-i või käsitsi voogude juhtimist.

HttpURLConnection-iga töötades on oluline õigesti käsitleda erandeid ja sulgeda ühendused, et vältida ressursside lekkimist.