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!
kotlin android acitivity doasync uithread asynctask anko ankologger
Commentami!