I am investigating Retrofit2
in my Android Application.
My gradle.build resembles:-
retrofit2Version = "2.4.0"
rxAndroidVersion = "2.0.2"
rxJavaVersion = "2.1.12"
okhttp3Version = "3.10.0"
implementation "com.squareup.okhttp3:logging-interceptor:$okhttp3Version"
implementation "com.squareup.retrofit2:retrofit:$retrofit2Version"
implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofit2Version"
implementation "com.squareup.retrofit2:converter-scalars:$retrofit2Version"
implementation "com.squareup.retrofit2:converter-jackson:$retrofit2Version"
implementation "io.reactivex.rxjava2:rxandroid:$rxAndroidVersion"
implementation "io.reactivex.rxjava2:rxjava:$rxJavaVersion"
I have three versions of the same @GET
method
@Headers("accept: */*")
@GET("experiment")
Observable<Response<ResponseBody>> getObservableExperiment(@Header("Authorization") @NonNull final String authenticationToken, @Query("active") @NonNull final Boolean isActive);
@Headers("accept: */*")
@GET("experiment")
Call<ResponseBody> getExperiment(@Header("Authorization") @NonNull final String authenticationToken, @Query("active") @NonNull final Boolean isActive);
@Headers("accept: */*")
@GET("experiment")
Response<ResponseBody> getWrappedExperiment(@Header("Authorization") @NonNull final String authenticationToken, @Query("active") @NonNull final Boolean isActive);
Both the getObservableExperiment()
and getExperiment()
work OK
however the getWrappedExperiment()
fails with:-
Caused by: java.lang.IllegalArgumentException: Could not locate call adapter for retrofit2.Response<okhttp3.ResponseBody>.
Tried:
* retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
* retrofit2.ExecutorCallAdapterFactory
at retrofit2.Retrofit.nextCallAdapter(Retrofit.java:241)
at retrofit2.Retrofit.callAdapter(Retrofit.java:205)
at retrofit2.ServiceMethod$Builder.createCallAdapter(ServiceMethod.java:238)
Is there a call adapter for retrofit2.Response<okhttp3.ResponseBody>
?
What have I over looked?