IllegalArgumentException:无法找到 rx.Observable RxJava、Retrofit2 的调用适配器

新手上路,请多包涵

调用 rest api 时出现上述错误。我同时使用 retrofit2 和 RxJava。

服务工厂.java

 public class ServiceFactory {
public static <T> T createRetrofitService(final Class<T> clazz, final String endpoint){

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(endpoint)
            //.addConverterFactory(GsonConverterFactory.create())

            .build();

    T service = retrofit.create(clazz);
    return service;
}

}

电影服务.java

 public interface MovieService{
//public final String API_KEY = "<apikey>";
public final String SERVICE_END = "https://api.mymovies.org/3/";
@GET("movie/{movieId}??api_key=xyz")
Observable<Response<Movies>> getMovies(@Field("movieId") int movieId);

}

在 MainActivity 里面

      MovieService   tmdbService = ServiceFactory.createRetrofitService(MovieService.class, MovieService.SERVICE_END);
    Observable<Response<Movies>> responseObservable = tmdbService.getMovies(400);
    responseObservable .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Subscriber<Response<Movies>>() {
                @Override
                public void onCompleted() {

                }

                @Override
                public void onError(Throwable e) {

                }

                @Override
                public void onNext(Response<Movies> moviesResponse) {

                }
            });

原文由 Hemendra Sethi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 421
2 个回答

请务必将 implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0' 或您正在使用的任何版本添加到您的依赖项中,然后使用该转换器配置改造:

 Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(endpoint)
    .addConverterFactory(GsonConverterFactory.create())
    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
    .build();

更新

RxJavaCallAdapterFactory 更名为 RxJava2CallAdapterFactory 。改变了上面的片段。

原文由 Logain 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题