我使用的是Retrofit2和RxJava2CallAdapter,我遇到了一个问题,即客户端取消的请求与服务器端取消的另一个请求之间存在差异。
如果我的用户离开当前屏幕已启动请求,请求将被取消,这是预期的行为。
但是,有时我得到:
HTTP FAILED: java.io.IOException: Canceled
要么
HTTP FAILED: java.net.SocketException: Socket closed
如果服务器取消请求(非常罕见且难以重现),但这些错误不会传输到DisposableObserver。如果我查看CallExecuteObservable的代码,我可以看到,如果请求被取消,则DisposableObserver中不会触发任何内容(onError()和onComplete()都不会触发)。
所以我的问题是:是否有可能有所作为和/或处理这种情况?提前谢谢。
答案 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