尝试修复 SocketTimeoutException的问题

This commit is contained in:
hyb1996 2019-01-20 21:39:56 +08:00
parent 863af6badf
commit e4dbd0da38

View File

@ -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();
}