Rssフィードを取得するアプリケーションにはRxJAvaでRetrofitを使用していますが、rssにすべての情報が含まれていないため、jsoupを使用してアイテムリンクを解析して画像と記事の説明を取得します。今私はそれをこのように使用しています:RxJavaフラットマップチェーニングリクエスト
public Observable<Rss> getDumpData() {
return newsAppService.getDumpData()
.flatMap(rss -> Observable.from(rss.channel.items)
.observeOn(Schedulers.io())
.flatMap(Checked.f1(item -> Observable.just(Jsoup.connect(item.link).get())
.observeOn(Schedulers.io())
.map(document -> document.select("div[itemprop=image] > img").first())
.doOnNext(element -> item.image = element.attr("src"))
)))
.defaultIfEmpty(rss)
.ignoreElements()
.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread());
}
を、私はこの行のエラーを取得しています:defaultIfEmpty(rss)
それはflatmapのRSSを認識しません。フラットマップ括弧でdefaultIfEmpty(rss)
を移動すると、戻り値の型をElementに変更する必要があるというエラーが表示されます。彼らの解決策は何ですか?
'defaultIfEmpty'パラメータに' flatMap'パラメータを渡すことによって達成しようとしていますか?あなたは例外をキャッチしたいですか? R.Zagó[email protected] –
観察可能 – Mamadou
はエラーが画像を取得するために 'newsAppService.getDumpData()'からか、変換から起こることを期待してくださいそのわずかエラーが発生した場合におけるその放射源? R.Zagó[email protected] –