如何在OkHttpClient中设置整个超时?

时间:2018-04-10 03:07:04

标签: java android okhttp3 okhttp

我试图谷歌找到相关问题,但没有运气。我知道如何设置connectionTimeout,readTimeout,writeTimeout但是我想为这些值设置整个超时,因为有时这三者之间的值会有所不同。

类似的是这个

How to set connection timeout with OkHttp

但我想要的就是那样的

builder.allTimeout(50, TimeUnit.SECONDS)

3 个答案:

答案 0 :(得分:0)

OkHttpClient.Builder builder = new OkHttpClient().newBuilder() 
    .readTimeout(30, TimeUnit.SECONDS)
    .connectTimeout(30, TimeUnit.SECONDS);

答案 1 :(得分:0)

在我的情况下,问题是我有SSL的实现,我正在创建自定义的OkHttpClient,它覆盖了我的进一步实现。我设置超时,我无法改变它。我已经忘了它并花了很多时间来找到简单的问题。看看你自己的代码,看看你是否没有其他的OkHttpClient实现覆盖你的超时。

答案 2 :(得分:0)

我找不到任何可以为所有人设置超时的方法,因为您可以在文档中查看它。

http://square.github.io/okhttp/3.x/okhttp/

此外,我找不到你为什么要实现这一目标的原因。

尝试以下可解决您问题的解决方法。

初始化一个const值

final int ALL_TIMEOUT = 30;

new OkHttpClient().newBuilder() 
    .readTimeout(ALL_TIMEOUT, TimeUnit.SECONDS)
    .connectTimeout(ALL_TIMEOUT, TimeUnit.SECONDS);
    .writeTimeout(ALL_TIMEOUT, TimeUnit.SECONDS);

OR

创建一个初始化构建器的包装器,只为所有超时传递一个值,包装器将自动初始化所​​有超时并为您提供构建器对象。

相关问题