我正在尝试使用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)