okhttp经常出现SocketTimeoutException

一开始,我创建的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))
 

 

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

posted on 2023-12-13 19:18  zyp_java_net  阅读(504)  评论(0编辑  收藏  举报

导航