SocketTimeoutException occurs all the time after an SocketTimeoutException occurs. #4981
github 的issue 连接:
https://github.com/square/okhttp/issues/4981
目前的解决方案:
1.增加重试的次数3次
2.配置连接池等和增加超时时间
//自定义连接池最大空闲连接数和等待时间大小,否则默认最大5个空闲连接
builder.connectionPool(new ConnectionPool(32, 20, TimeUnit.MILLISECONDS));
builder.protocols(Collections.singletonList(Protocol.HTTP_1_1));
builder.pingInterval(15, TimeUnit.SECONDS);// 默认是0
builder.retryOnConnectionFailure(false); //默认是true
/**增加超时时间
*private long mConnectTimeout = 2;
*private long mReadTimeout = 2;
*private long mWriteTimeout = 2;
**/
builder
.hostnameVerifier((hostname, session) -> true)
.connectTimeout(mBuilder.mConnectTimeout, TimeUnit.MINUTES)
.readTimeout(mBuilder.mReadTimeout, TimeUnit.MINUTES)
.writeTimeout(mBuilder.mWriteTimeout, TimeUnit.MINUTES);