Unable to create call adapter for io.reactivex.Observable

前端 未结 3 756
别那么骄傲
别那么骄傲 2020-12-25 09:12

I\'m going to send a simple get method to my server(it is Rails app) and get the result using RxJava and Retrofit. The thing that I did is:

My interface:



        
相关标签:
3条回答
  • 2020-12-25 09:47

    You need to tell Retrofit that you want to use RxJava 2, using:

    addCallAdapterFactory(RxJava2CallAdapterFactory.create())
    

    So, for creating your Retrofit object, you will have something like:

    Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(SERVICE_ENDPOINT)
        .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
        .build();
    
    0 讨论(0)
  • 2020-12-25 09:50

    The problem is with the library being used.

    I have replaced

    implementation 'com.squareup.retrofit2:adapter-rxjava:2.4.0'
    

    with

    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
    

    and used

    Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL).client(client)
                    .addConverterFactory(GsonConverterFactory.create(gson))
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                    .build();
    
    0 讨论(0)
  • 2020-12-25 09:58

    I ran into the same issue. Instead of adding new repositories you can add the dependency of Jake Wharton's library:

    implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
    

    Then you can add factory:

    Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("https://api.example.com")
        .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
        .build();
    

    The fact that adapter has version 2.. does not mean that it is intended for use with RxJava 2, as I thought.

    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.1.0'
    
    0 讨论(0)
提交回复
热议问题