在200个网络响应上调用onError代替onNext-RxJava,Retrofit

时间:2019-10-18 10:01:47

标签: android kotlin retrofit rx-java

如标题中所述,当请求以200响应时,不会调用onNext。它会触发onError。 LogCat没有显示任何错误。我也确定HTTP请求的响应为200。

这是我的服务界面

interface EnrollmentService {

@POST("enrollment/precheck")
fun sendPhoneNumber(@Body phoneInput: PhoneInputRequest) : Observable<Void>

}

存储库

class EnrollmentRepository(api : Retrofit) : BaseRepository(api) {
private val service = api.create(EnrollmentService::class.java)

fun sendPhoneNumber(phoneInputRequest: PhoneInputRequest) = service.sendPhoneNumber(phoneInputRequest)

}

这是触发请求的ViewModel中的方法:

 fun sendPhoneNumber(phoneNumber: String) {
        if(!isNetworkAvailable(phoneInputResponse))
            return
        compositeDisposable.add(repository.sendPhoneNumber(PhoneInputRequest(PhoneNumber("+48", phoneNumber)))
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(
                { phoneInputResponse.postValue(Event(ApiResponse.success(null)))},
                {error -> phoneInputResponse.postValue(Event(ApiResponse.error(ResponseError.getErrorType(error)))) }
            ))
    }

1 个答案:

答案 0 :(得分:0)

如果您只是期望 response.code(),请将return type方法的sendPhoneNumberObservable<Response<Void>>更改为Observable<Void>

因此,请使用:-

fun sendPhoneNumber(@Body phoneInput: PhoneInputRequest) : Observable<Response<Void>>