gpt4 book ai didi

android - 在将其传递给调用 Activity 之前在 Retrofit 中捕获 http 响应

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:01:01 25 4
gpt4 key购买 nike

现在我们正在使用这样的改造:

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 和服务器错误,如果一切正常,然后才将结果传递给调用 Activity 。

在构建 RestAdapter 时,有 setRequestInterceptor(); 允许我在发出请求之前捕获请求,我在想类似的东西,比如 setResponseInterceptor (),这将允许我在将响应传递给 Activity 之前捕获响应并处理那里的一般错误,但没有找到类似的东西。

最佳答案

您的自定义回调可以先在基类中处理响应,然后委托(delegate)给抽象方法。

public interface StatusResponse {
Status getStatus();
}

public abstract class CustomCallback<T extends StatusResponse> implements Callback<T> {
@Override public final void success(T data, Response response) {
if (data.getStatus() == Status.OK) {
success(data);
} else {
// Handle error..
}
}

public abstract void success(T data);
}

关于android - 在将其传递给调用 Activity 之前在 Retrofit 中捕获 http 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23383203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com