是否有必要设置getConnectTimeout和getReadTimeout?

时间:2018-01-15 16:02:47

标签: android http networking timeout httprequest

是否有必要使用getConnectTimeout和getReadTimeout以及我们为什么要使用它?

            urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestMethod("GET");
            urlConnection.setReadTimeout(10000 /* milliseconds */);
            urlConnection.setConnectTimeout(15000 /* milliseconds */);
            urlConnection.connect();

2 个答案:

答案 0 :(得分:1)

  

是否有必要使用getConnectTimeout和getReadTimeout

没有必要,但如果您想为用户提供良好的体验,这是一个很好的做法。没有人喜欢在加载屏幕上永远等待

  

为什么要使用它?

连接超时是初始连接的超时时间;即完成TCP连接握手。读取超时是等待读取数据的超时。我们使用它来确保用户不必在连接花费时间的情况下永远等待。 readTimeout的默认connectTimeoutHttpUrlConnection为零。这意味着用户可能必须永远等待资源加载(这不会发生,因为套接字超时)

答案 1 :(得分:1)

如果未指定连接超时(连接时间)和读取超时(读取响应时间),则进行此调用的线程将永久阻止。服务器端可能存在无限循环错误,但您的代码将受到影响。永远不要完全信任任何代码,特别是当它由其他人编写时。如果指定了这些时间,并且实际发生超时,您可以优雅地处理异常,或者可以重试有限次数(无论您的业务是什么并且批准)。