【问题标题】:onError is called instead of onNext on 200 network response - RxJava, Retrofit在 200 网络响应上调用 onError 而不是 onNext - RxJava,Retrofit
【发布时间】:2020-02-15 07:29:48
【问题描述】:

正如标题中提到的,当请求以 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)))) }
            ))
    }

【问题讨论】:

  • 那么错误是什么?
  • @akarnokd 它是 NullPointerException。 200 响应的正文为空。会不会是这个问题?
  • 您的回复类型无效。您必须将 Void 更改为响应的对象。 fun sendPhoneNumber(@Body phoneInput: PhoneInputRequest) : Observable&lt;Any or Your Response Object Class&gt;
  • 您是否尝试使用Observable&lt;Unit&gt; 而不是Observable&lt;Void&gt;
  • Observable 是问题所在。 API 发生了变化,一旦我添加了响应对象,它就起作用了。我没有尝试过,但我认为 Unit 或 Any 可以解决以前的问题。

标签: android kotlin retrofit rx-java


【解决方案1】:

如果您只是期待 response.code()sendPhoneNumber 方法的 return typeObservable&lt;Void&gt; 更改为 Observable&lt;Response&lt;Void&gt;&gt;

所以,使用:-

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

【讨论】:

    猜你喜欢
    • 2018-02-20
    • 2018-09-09
    • 2019-12-22
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 2020-04-18
    相关资源
    最近更新 更多