You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RxJava 2与Retrofit 2调用API时出现Observable调用适配器创建异常求助

解决Retrofit 2 + RxJava 2无法创建Observable调用适配器的问题

嘿,这个坑我踩过!你遇到的IllegalArgumentException: Unable to create call adapter for io.reactivex.Observable错误,本质是Retrofit不知道怎么把API请求转换成RxJava2的Observable类型——因为你的依赖里少了Retrofit和RxJava2对接的专用适配器。

第一步:补全缺失的依赖

你现在的依赖里有Retrofit核心、Gson转换器、RxJava2和RxAndroid,但还差retrofit2-adapter-rxjava2这个关键依赖。把它加到你的依赖配置里(版本和Retrofit保持一致2.3.0):

compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' // 新增这个依赖
implementation 'io.reactivex.rxjava2:rxjava:2.1.12'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'

第二步:配置Retrofit实例时添加RxJava2适配器

在构建Retrofit对象的时候,必须调用addCallAdapterFactory()把RxJava2的适配器加进去,不然Retrofit还是找不到对应的转换逻辑:

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://newsapi.org/")
    .addConverterFactory(GsonConverterFactory.create())
    .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) // 一定要加这个!
    .build();

第三步:确认API接口的返回类型

检查你的APIsInterface里的方法,确保返回的是RxJava2的Observable(别不小心导入了RxJava1的rx.Observable):

public interface APIsInterface {
    @GET("v2/top-headlines")
    Observable<NewsResponse> getTopHeadlines(
        @Query("country") String country,
        @Query("apiKey") String apiKey
    );
}

做完这三步,再调用API应该就不会报这个错误啦!

内容的提问来源于stack exchange,提问作者Gissipi_453

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:15:28