我是RxJava的新手,如果这听起来太新手,请原谅我:-)。
到目前为止,我有一个实现Retofit回调的抽象CallbackClass。在那里,我捕获回调的"onResponse“和"onError”方法,并处理各种错误类型,最后将其转发给自定义实现的方法。我还使用这个集中的类来处理请求/响应、应用程序日志记录和其他事情。
例如:对于来自我的服务器的特定错误代码,我在响应正文中收到一个新的Auth令牌,刷新该令牌,然后clone.enqueue调用。当然,对于来自我的服务器的响应,还有其他几个全局行为。
当前解决方案(不含Rx):
public abstract void onResponse(Call<T> call, Response<T> response, boolean isSuccess);
public abstract void onFailure(Call<T> call, Response<T> response, Throwable t, boolean isTimeout);
@Override
public void onResponse(Call<T> call, Response<T> response) {
if (_isCanceled) return;
if (response != null && !response.isSuccessful()) {
if (response.code() == "SomeCode" && retryCount < RETRY_LIMIT) {
TokenResponseModel newToken = null;
try {
newToken = new Gson().fromJson(new String(response.errorBody().bytes(), "UTF-8"), TokenResponseModel.class);
} catch (Exception e) {
e.printStackTrace();
}
SomeClass.token = newToken.token;
retryCount++;
call.clone().enqueue(this);
return;
}
}
} else {
onResponse(call, response, true);
removeFinishedRequest();
return;
}
onFailure(call, response, null, false);
removeFinishedRequest();
}
@Override
public void onFailure(Call<T> call, Throwable t) {
if (_isCanceled) return;
if (t instanceof UnknownHostException)
if (eventBus != null)
eventBus.post(new NoConnectionErrorEvent());
onFailure(call, null, t, false);
removeFinishedRequest();
}
我的问题是:在最终链接(或重试)回subscriber方法之前,有没有办法让这种集中的响应处理行为?
我发现这两个链接都有一个很好的起点,但没有一个具体的解决方案。任何帮助都将不胜感激。
https://stackoverflow.com/questions/39437299
复制相似问题