【发布时间】:2020-12-07 17:50:27
【问题描述】:
我有一个书籍清单。
open class Book(
@PrimaryKey
var id: String? = null,
var title: String? = null,
var author: String? = null
): RealmObject()
在 for 循环时,我过滤了一些书并创建了一个带有过滤后的 Observable。我将每个 observable 添加到一个数组中。
val listInserts = ArrayList<Observable<Book>>()
for loop(..) {
if (localBook condition) {
val postObservable = networkApiAdapter.insert(localBook)
listInserts.add(postObservable)
}
}
我合并(或连接)可观察对象,希望有一些连续的 POST 请求。
Observable.concat(listInserts)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{ s ->
println(s)
},
{ err ->
println(err)
},
{ println("onComplete") }
)
在我的 MongoDb+Flask 服务器上总是只收到一个 POST 请求,我也收到此错误:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was NUMBER at line 1 column 4 path $
networkApiAdapter 函数,改造:
class NetworkAPIAdapter private constructor() {
fun insert(dto: Book): Observable<Book> {
println(dto.toString())
return bookService.insert(dto.title!!, dto.author!!)
}
interface BooksService {
@FormUrlEncoded
@POST(URL_ORDERS_ALL)
fun insert(
@Field("title") title: String,
@Field("author") author: String
): Observable<Book>
}
}
欢迎任何帮助。我不知道如何做多个请求。我用 zip、repeatUntil、flatMap 尝试了许多解决方案,但都没有奏效。
解决此问题后,我必须删除所有本地书籍并执行 GET 请求。所有这些都使用 RxJava 工作。
【问题讨论】:
标签: kotlin post retrofit rx-java concat