OnError at observe 一个 Observable on Retrofit

我正在尝试观察String我的aAPI但我不知道为什么当我订阅它时它总是跳转到onError方法,即使它很好地创建了我的 Retrofit Builder。


我的NetworkModule:


@Module

class NetworkModule{


    /**

     * Provides the Post service implementation.

     * @param retrofit the Retrofit object used to instantiate the service

     * @return the Post service implementation.

     */

    @Provides

    fun provideUserAuth(): ApiSMS{

        return Retrofit.Builder()

            .baseUrl(BASE_URL)

            .addConverterFactory(GsonConverterFactory.create())

            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())

            .build()

            .create(ApiSMS::class.java)

    }

}

我的ApiCall:


interface ApiSMS {


    @get:POST("/api/auth/sign_in")

    val getAuthentication: Observable<Credentials>


    @get:GET("/api/status")

    val getStatus: Observable<String>

}

我ViewModel从我观察的地方。当我调用getStatus创建我的 Retrofit 实例但只继续onSubscribe然后onError:


//Get Api Status

fun getStatus() {

    apiSMS.getStatus

        .subscribeOn(Schedulers.io())

        .observeOn(AndroidSchedulers.mainThread())

        .subscribe(getObserver())

}


private fun getObserver(): Observer<String> {

    return object : Observer<String> {

        override fun onComplete() {

            Log.d("test", "onComplete")

        }


        override fun onSubscribe(d: Disposable) {

            Log.d("test", "onSubscribe")

            disposable = d

        }


        override fun onNext(t: String) {

            Log.d("test", "onNext")

            Log.d("test", t)

        }


        override fun onError(e: Throwable) {

            Log.d("test", "onError")

        }

    }

}


慕雪6442864
浏览 119回答 1
1回答

猛跑小猪

如果出现该错误,您可能想检查您的BASE_URL&nbsp;NOT&nbsp;to be withouthttps还要确保打印您的方法给出的错误。您应该可以从方法中这样调用它onError:override&nbsp;fun&nbsp;onError(e:&nbsp;Throwable)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java