diff --git a/autojs/src/main/java/com/stardust/autojs/core/http/MutableOkHttp.java b/autojs/src/main/java/com/stardust/autojs/core/http/MutableOkHttp.java index f80c5ed5..1d4f607e 100644 --- a/autojs/src/main/java/com/stardust/autojs/core/http/MutableOkHttp.java +++ b/autojs/src/main/java/com/stardust/autojs/core/http/MutableOkHttp.java @@ -1,5 +1,6 @@ package com.stardust.autojs.core.http; +import java.net.SocketTimeoutException; import java.util.Collections; import java.util.concurrent.TimeUnit; @@ -19,13 +20,24 @@ public class MutableOkHttp extends OkHttpClient { private long mTimeout = 30 * 1000; private Interceptor mRetryInterceptor = chain -> { Request request = chain.request(); - Response response = chain.proceed(request); + Response response = null; int tryCount = 0; - while (!response.isSuccessful() && tryCount < getMaxRetries()) { + do { + boolean succeed; + try { + response = chain.proceed(request); + succeed = response.isSuccessful(); + } catch (SocketTimeoutException e) { + succeed = false; + if (tryCount >= getMaxRetries()) { + throw e; + } + } + if (succeed || tryCount >= getMaxRetries()) { + return response; + } tryCount++; - response = chain.proceed(request); - } - return response; + } while (true); }; public MutableOkHttp() { @@ -64,6 +76,7 @@ public class MutableOkHttp extends OkHttpClient { public void setTimeout(long timeout) { + mTimeout = timeout; muteClient(); }