我正在使用REST API查詢Person對象列表。最大限度是100人的迴應。我需要取回所有人,總金額未知。 第一個響應中有一個名爲「next」的字段,其中包含下一頁的url。我需要使用RxJava/RxAndroid和Retrofit鏈接這些調用,直到最後一個響應有一個空的「下一個」字段。 由於「下一個」字段包含分頁網址,因此所有後續的調用將具有與第一個不同的網址。 什麼是最簡單的方法來做到這一點?android rxjava2/retrofit2使用分頁令牌鏈接調用
1
A
回答
1
類似的東西,以這樣的工作(有點廣義):
public Observable<Response> paginate(String initialUrl){
AtomicReference<String> url = new AtomicReference<>(initialUrl)
return Observable.defer(() -> api.loadUsers(url.get())
.doOnNext(response -> url.set(response.next))
.repeatWhen(r -> r.takeWhile(!url.get().isEmpty()));
}
0
你可以做這樣的事情。
Observable.just("input as one item if any").
.map(new Function<String, List<Person>>(){
@Override
public List<Person> apply(String inPut) throws Exception {
// using inPut, get url, service name, and other input
// params
String nextUrl = "firsturl";
List<Person> persons = new ArrayList<Persons>();
while(nextUrl != null){
//call service using plain retrofit passing nextUrl and get
//person objects
//add 100 person objects from each call
persons.add();
//get next Url
if(nextUrlFromResponse != null){
nextUrl = "next url from previous call";
}else{
nextUrl = null;
}
}
return persons;
}
}).subscribeOn(Schedulers.io()).observeOn(Androidmainthread);
相關問題
- 1. 在鏈接上使用CSRF令牌
- 2. 爲什麼使用分頁令牌?
- 3. Symfony2的鏈接令牌
- 4. 鏈接取消令牌
- 5. 在Azure中調用web api時無法使用令牌令牌
- 6. Xpages使用auth令牌調用Rest服務令牌
- 7. 如何使用分頁鏈接
- 8. 使用oAuth令牌進行API調用
- 9. 使用jsoup獲取和重定向鏈接的鏈接與令牌=到底
- 10. 使用從STS分配的令牌來調用WCF服務
- 11. 在直接JavaScript Twitter API 1.1中使用OAuth令牌調用
- 12. WSO2 IS - 如何使用內聯令牌鏈接一次登錄?
- 13. 在Facebook Graph API中使用應用令牌代替用戶/頁面令牌
- 14. 頁面令牌使用YouTube API a3 v3
- 15. 將Google令牌與FCM鏈接註冊令牌
- 16. 如何使用Unix分離令牌?
- 17. 使用android AccountManager獲取OAuth2令牌?
- 18. 使用STS令牌連接到Organization.svc
- 19. 從指令鏈接調用$ http.get
- 20. 調用鏈接Android應用程式
- 21. 如何從分頁指令angularjs隱藏直接頁面鏈接?
- 22. csrf令牌使用
- 23. 調整分頁鏈接的位置
- 24. nodejs身份驗證令牌鏈接到安全頁面
- 25. Gwt和頁面超鏈接(#第3章)干擾歷史令牌
- 26. Marketo令牌鏈接忽略樣式
- 27. 鏈接在API(auth令牌(oauth2))c#.net
- 28. IE10將令牌插入.NET MVC鏈接
- 29. 使用PHP中的CURL命令調用鏈接/ URL
- 30. 笨分頁鏈接
您是否想要進行所有調用,然後返回(發出)一大羣人或加載人員作爲對某些操作的反應? – skywall
一旦所有調用完成,我寧願有一個最後發出的人的大名單 –
您可能會發現這個有用https://stackoverflow.com/questions/28047272/handle-paging-with-rxjava – skywall