Я работаю с конечной точкой, которая не очень гибкая. Это в основном дает мне только 10 ответов за раз с несколькими полями, которые дают мне некоторый контекст:
{
'num_pages': n,
'page': m, // where m <= n,
'total_records': t, // where t = n*10
'records': [ ... ] // sizeOf(records) == 10
}
Так что я в основном выделяю num_pages
asyn c запросов и строю запросы как таковые:
val baseUrl = "http://localhost/path/to/endpoint"
repeat(num_pages) {page ->
client.get<String>("$baseUrl?page=$page}")
}
Но мне интересно, есть ли лучший способ сделать это. Как иногда, даже после настройки HttpClient
(либо apache или CIO) я получаю тайм-ауты, сброс соединения по пиру и cancellationexceptions
.
Короче говоря, каков подходящий способ обработки этого случая используя ктор? num_pages
в этом контексте может достигать 200. Я заметил, что ktor поддерживает потоковую передачу, но я не думаю, что это применимо в этом контексте.