是否有必要使用getConnectTimeout和getReadTimeout以及我们为什么要使用它?
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setReadTimeout(10000 /* milliseconds */);
urlConnection.setConnectTimeout(15000 /* milliseconds */);
urlConnection.connect();
答案 0 :(得分:1)
是否有必要使用getConnectTimeout和getReadTimeout
没有必要,但如果您想为用户提供良好的体验,这是一个很好的做法。没有人喜欢在加载屏幕上永远等待
为什么要使用它?
连接超时是初始连接的超时时间;即完成TCP连接握手。读取超时是等待读取数据的超时。我们使用它来确保用户不必在连接花费时间的情况下永远等待。 readTimeout
的默认connectTimeout
和HttpUrlConnection
为零。这意味着用户可能必须永远等待资源加载(这不会发生,因为套接字超时)
答案 1 :(得分:1)
如果未指定连接超时(连接时间)和读取超时(读取响应时间),则进行此调用的线程将永久阻止。服务器端可能存在无限循环错误,但您的代码将受到影响。永远不要完全信任任何代码,特别是当它由其他人编写时。如果指定了这些时间,并且实际发生超时,您可以优雅地处理异常,或者可以重试有限次数(无论您的业务是什么并且批准)。