Нельзя присвоить результат запроса переменной, поскольку он выполняется асинхронно.Вместо этого у вас есть несколько вариантов, например coroutines или RxJava , но простым решением может быть просто передать функции обратного вызова, которые будут выполняться после получения ответа.
Пример
lateinit var requestQueue: RequestQueue
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
requestQueue = Volley.newRequestQueue(this)
getTestData("https://jsonplaceholder.typicode.com/todos/1",
{ body -> Log.d("Network", "Success: $body") },
{ error -> Log.d("Network", "Error", error) }
)
}
override fun onDestroy() {
super.onDestroy()
requestQueue.cancelAll { true }
}
private fun getTestData(url: String, onSuccess: (String) -> Unit, onError: (Throwable) -> Unit) {
val testRequest = StringRequest(Request.Method.GET, url,
Response.Listener { onSuccess(it) },
Response.ErrorListener { onError(it)}
)
requestQueue.add(testRequest)
}
Выход
D/Network: Success: {
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
}