Richieste HTTP con Volley in Kotlin

Mattepuffo's logo
Richieste HTTP con Volley in Kotlin

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!


Condividi

Commentami!