okhttp经常出现SocketTimeoutException

发布时间 2023-12-13 19:20:40作者: zyp_java_net

一开始,我创建的okhttpclient的方式:

val clientBuilder = new OkHttpClient.Builder()
			.readTimeout(readTimeoutMillis, TimeUnit.MILLISECONDS)
			.writeTimeout(writeTimeoutMillis, TimeUnit.MILLISECONDS)
            .connectTimeout(connectTimeoutMillis, TimeUnit.MILLISECONDS)
            .retryOnConnectionFailure(true)

改善的方法就是加多下面两行:

.connectionPool(ConnectionPool(0, 1, TimeUnit.NANOSECONDS));
.protocols(listOf(Protocol.HTTP_1_1))

 

最后的代码如下

val clientBuilder = new OkHttpClient.Builder()
			.readTimeout(readTimeoutMillis, TimeUnit.MILLISECONDS)
			.writeTimeout(writeTimeoutMillis, TimeUnit.MILLISECONDS)
            .connectTimeout(connectTimeoutMillis, TimeUnit.MILLISECONDS)
            .retryOnConnectionFailure(true)
            .connectionPool(ConnectionPool(0, 1, TimeUnit.NANOSECONDS));
            .protocols(listOf(Protocol.HTTP_1_1))
 

 

这样的代码运行起来就没有经常出现这个异常了。