Я использую RxJava1 и Retrofit2 в моем проекте.Около 10% моих пользователей получают следующую ошибку:
Caused by java.lang.IllegalArgumentException: Could not locate call
adapter for rx.Single<com.squareup.okhttp.ResponseBody>.
Tried:
* retrofit2.adapter.rxjava.RxJavaCallAdapterFactory
* retrofit2.ExecutorCallAdapterFactory
at retrofit2.Retrofit.nextCallAdapter(Retrofit.java:237)
at retrofit2.Retrofit.callAdapter(Retrofit.java:201)
at retrofit2.ServiceMethod$Builder.createCallAdapter(ServiceMethod.java:232)
at
retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:160)
at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:166)
at retrofit2.Retrofit$1.invoke(Retrofit.java:145)
at java.lang.reflect.Proxy.invoke(Proxy.java:913)
...
Ниже приведены следующие фрагменты кода:
import rx.Single
val retrofit = Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.baseUrl(BuildConfig.API_BASE_URL)
.build()
@FormUrlEncoded
@POST("/example")
fun exampleFun(@Field("param") param1: String): Single<ResponseBody>
implementation 'com.squareup.retrofit2:adapter-rxjava:2.0.2'
implementation 'com.squareup.retrofit2:retrofit:2.1.0'
Я уже нашел похожие вопросы, но это не та же проблема.
- Эти решения собирались использовать
RxJava2CallAdapterFactory
вместо RxJavaCallAdapterFactory
, но я использую RxJava1. - Другая странная вещь заключается в том, что эта проблема затрагивает только 10% моих пользователей