java.lang.IllegalArgumentException: не удалось найти адаптер вызова для rx.Single <com.squareup.okhttp.ResponseBody> - PullRequest
0 голосов
/ 10 мая 2018

Я использую 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% моих пользователей

1 Ответ

0 голосов
/ 11 мая 2018

Наконец-то я изменил Single на Observable и теперь он работает нормально. Но если кто-то знает лучшее решение, пожалуйста, дайте мне знать!

...