是否可以将网络调用超时设置为 60 秒以上。

Posted

技术标签:

【中文标题】是否可以将网络调用超时设置为 60 秒以上。【英文标题】:Is it possible to set network call timeout more than 60 seconds. 【发布时间】:2019-04-28 21:56:57 【问题描述】:

我有一些网络调用可能需要一分钟以上才能响应,所以我想将请求超时设置为 180 秒。

我尝试了这段代码,但看起来 60 秒后它取消了请求并且不读取超时属性。

这是我的代码。

            jsonObjectRequest.setRetryPolicy(new DefaultRetryPolicy(
                    (int) TimeUnit.SECONDS.toMillis(185),
                    DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                    DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

【问题讨论】:

是使用改造 2.0 @android 团队,所以 volley 是不可能的 Change Volley timeout duration的可能重复 @KaranMer :我知道如何更改请求持续时间,但我想知道将超时持续时间增加到 60 秒以上的可能性。 【参考方案1】:

改造 2 是可能的。试试下面的代码

int timeOut = 3 * 60; // duration in seconds
    OkHttpClient client = new OkHttpClient.Builder()
            .connectTimeout(timeOut, TimeUnit.SECONDS)
            .writeTimeout(timeOut, TimeUnit.SECONDS)
            .readTimeout(timeOut, TimeUnit.SECONDS)
            .build();

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("your netwrok url")
            .addConverterFactory(GsonConverterFactory.create())
            .client(client)
            .build();

YourRetrofitInterface service = retrofit.create(YourRetrofitInterface.class);

【讨论】:

以上是关于是否可以将网络调用超时设置为 60 秒以上。的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking - 等待 60 秒后超时间隔与预期不同

如何解决SSH连接Linux超时自动断开

SSH超时断开(ClientAliveInterval和ClientAliveCountMax )的使用

AWS 弹性负载均衡器超时

RestKit 超时被忽略

为 xmlrpclib.ServerProxy 设置超时