onError вызывается вместо onNext на 200 ответ сети - RxJava, Retrofit - PullRequest
0 голосов
/ 18 октября 2019

Как упомянуто в заголовке, onNext не вызывается, когда запрос отвечает 200. Вместо этого он запускает 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 голосов
/ 18 октября 2019

Если вы ожидаете response.code(), измените return type метода sendPhoneNumber на Observable<Response<Void>> с Observable<Void>

Итак, используйте: -

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