From e4dbd0da38d03d0c0243da12ef6b6009055a8df6 Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Sun, 20 Jan 2019 21:39:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E4=BF=AE=E5=A4=8D=20SocketTi?= =?UTF-8?q?meoutException=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autojs/core/http/MutableOkHttp.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) 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(); }