我正在使用retrofit2和rxjava2。
我在我的gradle中使用了大部分最新的库,我尝试了许多创建适配器的方法。
我还创建了一些自定义适配器,但似乎没有任何工作
服务:
public static Retrofit getClient() {
if (retrofit==null) {
retrofit = new Retrofit.Builder().baseUrl(AppConstants.BASE_URL)
.addConverterFactory(GsonConverterFactory.create()).
addCallAdapterFactory(RxJava2CallAdapterFactory.create()).build();
}
return retrofit;
}
fragment code:
ApiInterface apiInterface
=ApiClient.getClient().create(ApiInterface.class);
apiInterface.getCategoryVideos(AppConstants.API_KEY)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Observer<Video>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Video value) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
感谢任何建议或解决方案。 我也尝试过此链接stackoverflow solution
中的解决方案答案 0 :(得分:0)
尝试更改创建客户端
public class MyClient {
private static MyClient instance;
private ApiInterface apiInterface;
private MyClient() {
final Retrofit retrofit = new Retrofit.Builder().baseUrl(AppConstants.BASE_URL)
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
gitHubService = retrofit.create(ApiInterface.class);
}
public static MyClient getInstance() {
if (instance == null) {
instance = new MyClient();
}
return instance;
}
}
和片段代码
private Subscription subscription;
...
subscription = MyClient.getInstance().getCategoryVideos(AppConstants.API_KEY)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Video>() {
@Override public void onCompleted() {
Log.d(TAG, "In onCompleted()");
}
@Override public void onError(Throwable e) {
e.printStackTrace();
Log.d(TAG, "In onError()");
}
@Override public void onNext(Video value) {
Log.d(TAG, "In onNext()");
}
});