我正在使用改造2和RxJava 2
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
implementation 'io.reactivex.rxjava2:rxjava:2.1.12'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
我在调用此API时遇到此错误( https://newsapi.org/v2/top-headlines?country=us&apiKey=xxxxxxxxxxx ) -
引起:java.lang.IllegalArgumentException:无法创建调用 适配器 io.reactivex.Observable 方法APIInterface.getHeadlines
即使再次检查也无法解决问题 这是我的代码 -
public class RetrofitBuilder {
private APIsInterface mAPIsInterface;
public APIsInterface RetrofitBuilder() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Config.baseURL)
.build();
mAPIsInterface = retrofit.create(APIsInterface.class);
return mAPIsInterface;
}
}
这是API接口 -
public interface APIsInterface {
@GET("/top_headlines")
Observable<HeadlinesBean> getHeadlines(@Query("country") String country, @Query("apiKey") String apiKey);
}
这是我的活动中的API调用 -
RetrofitBuilder mRetrofitBuilder = new RetrofitBuilder();
Observable<HeadlinesBean> observable = mRetrofitBuilder.RetrofitBuilder().getHeadlines("us", "227c9e8935bc4373b83e0908795e5696");
observable.subscribe(new Observer<HeadlinesBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(HeadlinesBean headlinesBean) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
答案 0 :(得分:1)
我使用了这个 - .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.baseUrl(Config.baseURL)
.build();
它的工作。感谢@EpicPandaForce的答案。