簡體   English   中英

帶有改造2的RxJava2用於Api調用

[英]RxJava2 with retrofit 2 for Api call

在RxJava 1中,我正在做這樣的事情

  private void doLogin() {

        final ProjectApi service = RetrofitService.createRetrofitClient();
        staticsubscription = service.service.getLogin(new PostLoginPojo("","", new Mobsess("","","","","")))
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(staticObserver);

    }
 Observer<ApiLogin> getLoginObserver = new Observer<ApiLogin>() {

        @Override
        public void onCompleted() {
            staticsubscription.unsubscribe();
        }

        @Override
        public void onError(Throwable e) {
            // Called when the observable encounters an error
           // Log.d(TAG, ">>>> onError gets called : " + e.getMessage());
        }

        @Override
        public void onNext(ApiLogin staticData) {


        }
    };

現在,使用RxJava 2,我試圖像這樣轉換它
編輯: -

private void doLogin(){

        final ProjectApi service = RetrofitService.createRetrofitClient();
        Disposable disposable = service.getLogin(new PostLoginPojo("","", new Mobsess("","","","","")))
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(getLoginObserver());

    }

    public DisposableObserver<ApiLogin> getLoginObserver() {
    return new DisposableObserver<ApiLogin>() {
        @Override
        public void onNext(ApiLogin value) {

        }

        @Override
        public void onError(Throwable e) {

        }

        @Override
        public void onComplete() {

        }
    };
}

這是我的Project Api

public interface ProjectApi {
    String login = "customer/validate";

    @POST(login)
    Observable<ApiLogin> getLogin(@Body PostLoginPojo post);
}

這是翻新服務:

public class RetrofitService {
    private final static String API_URL = AppUrl.baseUrl ;
    public RetrofitService(){
    }
    public static ProjectApi createRetrofitClient() {
        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient client = new OkHttpClient.Builder().
                addInterceptor(interceptor).build();

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


        return retrofit.create(ProjectApi.class);
    }
}

錯誤: incompatible types: void cannot be converted to Disposable

我在.subscribe(getLoginObserver())上收到錯誤“不兼容的類型”,

找到“無效”所需的“ io.reacivex.disposbles.Disposable”

我在這里做錯了什么? 謝謝

subscribe現在返回void

public Observer<ApiLogin> getLoginObserver() 

應該返回DisposableObserver<ApiLogin> ,然后您應該可以使用

subscribeWith(getLoginObserver());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM