【发布时间】:2014-04-30 08:27:15
【问题描述】:
现在我们正在使用这样的改造:
service.executeSomeRequest(UserPreferenceRequest userPreferenceRequest, new Callback<UserPreferenceResponse>() {
@Override
public void success(UserPreferenceResponse responseCallback, Response response) {
if (responseCallback.getStatus() == ResponseStatus.OK) {
// Everything is OK, process response
} else {
ApiErrorProcessor.process(responseCallback.getError());
}
}
@Override
public void failure(RetrofitError retrofitError) {
ServerErrorProcessor.process(retrofitError);
}
});
但是我们有很多请求,实际上,我们实现的每个请求都需要我们编写相同的错误代码处理(针对 API 和服务器错误),这会重复代码。
我们想要的是只覆盖感兴趣的方法,如果没有提供实现,则执行默认实现。
类似这样的:
service.executeSomeRequest(UserPreferenceRequest userPreferenceRequest, new
CustomCallback<UserPreferenceResponse>() {
@Override
public void success(UserPreferenceResponse responseCallback, Response response) {
super.success(responseCallback, response);
// Everything is OK, process response
}
});
CustomCallback 将处理 API 和服务器错误,如果一切正常,然后才将结果传递给调用活动。
在构建RestAdapter 时,setRequestInterceptor(); 允许我在发出请求之前捕获请求,我在想类似的东西,例如 setResponseInterceptor(),这将允许我在将响应传递给之前捕获响应活动并在那里处理一般错误,但没有找到类似的东西。
【问题讨论】: