gpt4 book ai didi

java - Retrofit2+RxJava 在 OnNext() 中向 Model 类返回 null

转载 作者:行者123 更新时间:2023-12-02 01:23:45 32 4
gpt4 key购买 nike

我正在向我的服务器发送一个简单的 get 方法,并使用 RxJava 和 Retrofit 获取结果。我所做的事情是:

界面

public interface Posts {

@GET("/typicode/demo/{path}")
Observable<List<Beans>> getPosts(@Path("path") String path);
}

改造实例

public static Retrofit getInstance() {
if (retrofit == null) {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();
retrofit = new Retrofit.Builder().baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.createWithScheduler(Schedulers.io()))
.client(client)
.build();
}
return retrofit;
}

主要 Activity

Observer<List<Beans>> observer = new Observer<List<Beans>>() {
@Override
public void onSubscribe(Disposable d) {

}

@Override
public void onNext(List<Beans> value) {
Log.d("Saket", value.toString());
}

@Override
public void onError(Throwable e) {

}

@Override
public void onComplete() {

}
};
Posts client = RetrofitClientInstance.getInstance().create(Posts.class);
client.getPosts("posts").observeOn(Schedulers.newThread()).subscribeOn(AndroidSchedulers.mainThread()).subscribe(observer);

我使用 HTTPLoggingInterceptor 获得正确的输出。

最佳答案

你可以像这样使用 subscribeWith

还将订阅更改为 --> Schedulers.newThread() 或 Schedulers.io()现在您正在 UI 线程上进行网络调用

 client.getPosts("posts")
.subscribeOn(Schedulers.newThread()) // change
.observeOn(AndroidSchedulers.mainThread()) // change
.subscribeWith(new Observer<Response<Observable<List<Beans>>>() {
@Override
public void onSubscribe(Disposable d) {

}

@Override
public void onNext(Response<Observable<List<Beans>>> response) {

}

@Override
public void onError(Throwable e) {
e.printStackTrace();


}

@Override
public void onComplete() {


}
});

关于java - Retrofit2+RxJava 在 OnNext() 中向 Model 类返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57268956/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com