В приведенном ниже коде я делаю http запрос через модернизацию.как показано ниже, метод getAllPhotos () возвращает Observable<List<ResponseAllPhotos.Response>>
, чего я хочу добиться - иметь подписчика, который генерирует в операторах журнала, URL-адрес, заголовок, thumbnailUrl и все значения в классе данных, показанном ниже.
в разделе кода, размещенном ниже, я пытаюсь отобразить вышеупомянутые значения, которые существуют в классе данных, но журналы в методе подписки никогда не отображаются.
код :
//first attempt
/*var e = setupCommRequestService()?.
flatMap {
it.map {
Observable.fromIterable(it)
/*.map {
it
}
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe {
r->Log.i(LOG_TAG, "" + r.title)
}*/
}
}*/
//second attempt
var e = setupCommRequestService()?.
flatMap {
it
}
var r = e?.map {
it
}
var t = r?.map {
Observable.fromIterable(it)
.map {
it
}
}
var z = t?.observeOn(AndroidSchedulers.mainThread())
?.subscribeOn(Schedulers.io())
?.subscribe {
r->Log.i(LOG_TAG, "" + r.url)//never works
}
интерфейс
интерфейс CommunicationRequestService {
@GET("/photos")
fun getAllPhotos(): Observable<List<ResponseAllPhotos.Response>>
companion object {
fun initRetrofit(ctx : Context) : Single<CommunicationRequestService>? {
return Single.just(
Retrofit.Builder()
.addCallAdapterFactory(
RxJava2CallAdapterFactory.create()
)
.addConverterFactory(
GsonConverterFactory.create()
)
.baseUrl(ctx.getString(R.string.BASE_URL))
.build())
.flatMap { retrofit -> Maybe.just(retrofit)
.map { it-> it.create(CommunicationRequestService::class.java) }
.toSingle()
}
}
}
}
модель :
public object ResponseAllPhotos {
data class Response(val albumId : Int,val id : Int,val title : String,val url : String,val thumbnailUrl : String)