尝试修复 SocketTimeoutException的问题
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package com.stardust.autojs.core.http;
|
package com.stardust.autojs.core.http;
|
||||||
|
|
||||||
|
import java.net.SocketTimeoutException;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
@@ -19,13 +20,24 @@ public class MutableOkHttp extends OkHttpClient {
|
|||||||
private long mTimeout = 30 * 1000;
|
private long mTimeout = 30 * 1000;
|
||||||
private Interceptor mRetryInterceptor = chain -> {
|
private Interceptor mRetryInterceptor = chain -> {
|
||||||
Request request = chain.request();
|
Request request = chain.request();
|
||||||
Response response = chain.proceed(request);
|
Response response = null;
|
||||||
int tryCount = 0;
|
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++;
|
tryCount++;
|
||||||
response = chain.proceed(request);
|
} while (true);
|
||||||
}
|
|
||||||
return response;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
public MutableOkHttp() {
|
public MutableOkHttp() {
|
||||||
@@ -64,6 +76,7 @@ public class MutableOkHttp extends OkHttpClient {
|
|||||||
|
|
||||||
|
|
||||||
public void setTimeout(long timeout) {
|
public void setTimeout(long timeout) {
|
||||||
|
mTimeout = timeout;
|
||||||
muteClient();
|
muteClient();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user