
使用okhttp发起请求,请求对方接口偶尔会出现异常, java.net.SocketTimeoutException: Read timed out
使用okhttp发起请求,请求对方接口偶尔会出现异常, java.net.SocketTimeoutException: Read timed out
·
使用okhttp发起请求,请求对方接口偶尔会出现异常, java.net.SocketTimeoutException: Read timed out
有时候网络不太稳定或者返回的报文比较长就会出现这种情况。
两种解决方式。
一种增大超时时间,
一种使用重试机制。
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.6.0</version>
</dependency>
1、
OkHttpClient.Builder okHttpClient = new OkHttpClient.Builder()
.connectTimeout(1, TimeUnit.MINUTES)
.readTimeout(1, TimeUnit.MINUTES)
.writeTimeout(1, TimeUnit.MINUTES);
2、
OkHttpClient.Builder okHttpClient = new OkHttpClient.Builder()
.addInterceptor(new MyInterceptor());
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
import java.io.IOException;
public class MyInterceptor implements Interceptor {
// 最大重试次数
private int maxRetryTimes = 5;
@Override
public Response intercept(Chain chain) throws IOException {
return retry(chain, 0);
}
private Response retry(Chain chain, int count) {
Response response = null;
try {
System.out.println("第" + (count + 1) + "次进入retry方法。");
response = chain.proceed(chain.request());
} catch (Exception e) {
if (maxRetryTimes > count) {
response = retry(chain, count + 1);
}
} finally {
return response;
}
}
}
更多推荐
所有评论(0)