Android 如何发送链式POST请求RxJava
我需要将第一个Android 如何发送链式POST请求RxJava,android,kotlin,retrofit2,rx-java2,Android,Kotlin,Retrofit2,Rx Java2,我需要将第一个POST请求发送到服务器,将收到的响应插入第二个POST请求并将其发送回服务器。如何使用RxJava实现这一点?目前,一切正常,但第二个问题没有时间从第一个请求中获得答案,imageMediaId字段被发送为空 我的职能: fun uploadNewImageAndContact(toPath: String?, newContactApi: ContactsApi) { val file = File(toPath) val fileReqBody
POST
请求发送到服务器,将收到的响应插入第二个POST
请求并将其发送回服务器。如何使用RxJava
实现这一点?目前,一切正常,但第二个问题没有时间从第一个请求中获得答案,imageMediaId
字段被发送为空
我的职能:
fun uploadNewImageAndContact(toPath: String?, newContactApi: ContactsApi) {
val file = File(toPath)
val fileReqBody: RequestBody = file.asRequestBody("image/*".toMediaTypeOrNull())
val part: MultipartBody.Part =
MultipartBody.Part.createFormData("upload", file.name, fileReqBody)
// First Request
imagesService.postImage(part).enqueue(object : Callback<ResponseBody> {
override fun onFailure(call: Call<ResponseBody>, t: Throwable) {
}
override fun onResponse(call: Call<ResponseBody>, response: Response<ResponseBody>) {
if (response.code() == 201) {
// Get Image response Id
val gson = Gson()
val imageResponse =
gson.fromJson(response.body()?.string(), ImageResponse::class.java)
imageMediaId = imageResponse.ids[0]
// Second Request
contactsService.postNewContact(newContactApi)
.enqueue(object : Callback<ContactsApi> {
override fun onFailure(call: Call<ContactsApi>, t: Throwable) {
}
override fun onResponse(call: Call<ContactsApi>, response: Response<ContactsApi>) {
}
})
}
}
})
}
val newContactsApi = ContactsApi(id = "", firstName = mFirstName, lastName = mLastName, phone = mPhone,
email = mEmail, notes = mNotes, images = "https://mydb.site.io/media/${apiRepository.imageMediaId}")
apiRepository.uploadNewImageAndContact(toPath, newContactsApi)
使用rxjavaflatmap方法。下面是一个如何使用它来链接2个响应的示例:我需要一个关于Kotlin的解决方案,但我找不到任何建议您研究改型和RX改型,这将使您更轻松。但是,正如猜测者所说,flatMap是您想要用来将2个可观察的REST请求链接在一起的操作符。