小编Sim*_*uis的帖子

OkHttp不应用使用Annotations的Retrofit Interceptor的调用超时

我正在尝试使用OkHttp 3.12.0中最近添加的功能:全操作超时.为此,我还依赖于Invocation翻新2.5.0中的新类,它允许我检索方法注释.

注释是:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Timeout {

    int value();

    TimeUnit unit();

}
Run Code Online (Sandbox Code Playgroud)

改造界面是:

public interface AgentApi {

    @Timeout(value = 100, unit = TimeUnit.MILLISECONDS)
    @GET("something")
    Call<String> getSomething();

}
Run Code Online (Sandbox Code Playgroud)

拦截器是:

class TimeoutInterceptor implements Interceptor {

    @NonNull
    @Override
    public Response intercept(@NonNull Chain chain) throws IOException {
        Request request = chain.request();
        final Invocation tag = request.tag(Invocation.class);
        final Method method = tag != null ? tag.method() : null;
        final Timeout timeout = method != null ? method.getAnnotation(Timeout.class) : null;
        if (timeout …
Run Code Online (Sandbox Code Playgroud)

android retrofit okhttp retrofit2 okhttp3

12
推荐指数
1
解决办法
868
查看次数

标签 统计

android ×1

okhttp ×1

okhttp3 ×1

retrofit ×1

retrofit2 ×1