Richieste HTTP con Volley in Kotlin
Volley è una delle librerie più utilizzare in Android per eseguire richieste HTTP.
Oggi vediamo come usarla in Kotlin.
Cominciamo aggiungendo la libreria con gradle:
dependencies {
...........
implementation 'com.android.volley:volley:1.1.1'
}
Il passo successivo, ma non obbligatorio, è creare una classe Singleton per creare una coda ed aggiungere la richiesta corrente:
import android.content.Context
import com.android.volley.Request
import com.android.volley.RequestQueue
import com.android.volley.toolbox.Volley
class HttpSingleton constructor(context: Context) {
companion object {
@Volatile
private var INSTANCE: HttpSingleton? = null
fun getInstance(context: Context) = INSTANCE ?: synchronized(this) {
INSTANCE ?: HttpSingleton(context).also {
INSTANCE = it
}
}
}
val requestQueue: RequestQueue by lazy {
Volley.newRequestQueue(context.applicationContext)
}
fun <T> addToRequestQueue(req: Request<T>) {
requestQueue.add(req)
}
}
Infine, nella nostra Activity:
package com.mp.mpbook
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.android.volley.Request
import com.android.volley.Response
import com.android.volley.toolbox.JsonObjectRequest
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
getData();
}
fun getData() {
val url = "https://www.sito.it";
val jsonObjectRequest = JsonObjectRequest(
Request.Method.GET, url, null,
Response.Listener { response ->
Log.e("RES", response.toString())
},
Response.ErrorListener { error ->
Log.e("ERR", error.toString())
}
)
HttpSingleton.getInstance(this).addToRequestQueue(jsonObjectRequest)
}
}
In questo caso abbiamo fatto una JsonObjectRequest, ma varebbe anche per un altro tipo di request.
Enjoy!
android kotlin volley singleton jsonobjectrequest
Commentami!