Вложенные сетевые вызовы с использованием Rx-Android и Retrofit - PullRequest
0 голосов
/ 26 июня 2019

Я работаю над приложением, в котором я использовал Rx-android и Retrofit для выполнения сетевого запроса, но теперь в проекте есть требование, согласно которому я должен выполнять вложенные сетевые вызовы. Я пытался отгадать егоно не нашел ни одной хорошей статьи. Если кто-то работал над такой темой, пожалуйста, дайте мне знать ваши выводы.

Ответы [ 2 ]

1 голос
/ 26 июня 2019

Предполагается, что вы используете модификацию с адаптером rxjava:

fun firstRequest(): Single<Response<String>>

fun secondRequest(idFromFirstRequest: String): Single<Response<ResponseBody>>

Используйте оператор flatmap для цепочки сетевых вызовов:

firstRequest()
  // do more operators on the request, like transforming the object, or showing it first on the ui
  .flatMap { stringId -> secondRequest(stringId) }
  // you can flatMap here again to chain another network requests
  // .flatMap { thirdRequest() }
  // .flatMap { fourthRequest() }
  // and so on...
0 голосов
/ 26 июня 2019

Существуют различные статьи, связанные с цепочкой API, и самый простой способ достичь этого - использовать подходы Rx-Java

1) Использование оператора RxJava Zip (для параллельных запросов)

2) Использование оператора RxJava flatMap () (Для последовательного запроса один за другим)

См. Эти две ссылки для получения более подробных примеров

Синхронизация сетиВызовы с RxJava

Множественный запрос API с использованием дооснащения и rx java

...