Eseguire richieste HTTP in Android con Kotlin

Mattepuffo's logo
Eseguire richieste HTTP in Android con Kotlin

Eseguire richieste HTTP in Android con Kotlin

Eseguire richieste HTTP con Kotlin è alquanto semplice usando la classe URL.

Vediamo come eseguire una richiesta asincrona (che in ambito Android è obbligatorio) e visualizzare la risposta nel Logcat.

Come libreria esterna useremo Anko, sia per effettuare la richiesta asincrona, sia per il logging.

Aggiungete questo al gradle:

dependencies {
    ......................
    implementation 'org.jetbrains.anko:anko-commons:0.10.4'
}

Poi nella nostra Activity:

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_clienti.*
import org.jetbrains.anko.*
import java.net.URL

class ClientiActivity : AppCompatActivity(), AnkoLogger {

    private val baseUrl: String = "https://www.sito.it"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_clienti)

        btnCliente.setOnClickListener {
            val dialog = indeterminateProgressDialog(message = "Wait...", 
                    title = "Recupero dati")
            doAsync {
                requestClient()
                uiThread {
                    dialog.dismiss()
                }
            }
        }
    }

    private fun requestClient() {
        val result = URL(baseUrl).readText()
        info("RES: " + result)
    }
}

In pratica prima del doAsync avviamo un progress dialog di tipo indeterminato; in sostanza la rotella che gira.

Nel doAsync lanciamo il metodo; quando il metodo termina, facciamo il dismiss del dialog.

Nel nostro metodo facciamo la richiesta HTTP e stampiamo il risultato nel Logcat.

Enjoy!


Condividi

Commentami!