Я пытаюсь сделать много запросов http в retrofit2, и у меня есть проблема с моим API, которая позволяет мне выполнять только 6 запросов в минуту. Так что я пытаюсь сделать работу вокруг. То, что я хочу сделать, это поставить в очередь свои запросы, поэтому у меня есть 6 готовых запросов, затем каждую минуту я приостанавливаю вызов, а затем продолжаю вызов через минуту. Поэтому я избегаю кода ошибки: 429.
Вот где я делаю мой запрос
fun getEanItems(eanCode: ArrayList<String?>) {
val service = RetrofitInstance().getRetrofitInstance().create(getItemApi::class.java)
GlobalScope.launch(Dispatchers.Main) {
repeat(eanCode.size) { count ->
val call = service.getItemsData(eanCode[count].toString())
delay(2500)
call.enqueue(object : Callback<ItemsList> {
override fun onFailure(call: Call<ItemsList>, t: Throwable) {
Toast.makeText(context, "Could not fetch data", Toast.LENGTH_LONG).show()
}
override fun onResponse(call: Call<ItemsList>, response: Response<ItemsList>) {
if (response.isSuccessful) {
if (context != null) {
Toast.makeText(context, response.toString(), Toast.LENGTH_SHORT)
.show()
}
response.body()?.getitemsArrayList()?.let { generateItemsList(it) }
}
Log.i(TAG, response.body().toString())
}
})
}
}
}
Я тоже думал о том, чтобы составить свой список на куски, но я не знаю, если этохорошее решение или нет.
fun listSplit(listOfEanItems: ArrayList<String?>) {
var newList = listOfEanItems.chunked(6)
}