Retrofit2 - 请求取消的服务器端被忽略

时间:2017-04-11 22:53:00

标签: java android rx-java retrofit2 rx-java2

我使用的是Retrofit2和RxJava2CallAdapter,我遇到了一个问题,即客户端取消的请求与服务器端取消的另一个请求之间存在差异。

如果我的用户离开当前屏幕已启动请求,请求将被取消,这是预期的行为。

但是,有时我得到:

HTTP FAILED: java.io.IOException: Canceled 要么 HTTP FAILED: java.net.SocketException: Socket closed

如果服务器取消请求(非常罕见且难以重现),但这些错误不会传输到DisposableObserver。如果我查看CallExecuteObservable的代码,我可以看到,如果请求被取消,则DisposableObserver中不会触发任何内容(onError()和onComplete()都不会触发)。

所以我的问题是:是否有可能有所作为和/或处理这种情况?提前谢谢。

1 个答案:

答案 0 :(得分:0)

对我有帮助的是更换:

implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'

具有:

implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0'

这帮助了我解决这个问题,并且每次都调用onError()。 有关更多信息:https://github.com/JakeWharton/retrofit2-rxjava2-adapter