我正在尝试从远程服务器获取一些数据。为此,我使用HttpURLConnection
。问题是,有时建立连接后的服务器只是挂起或什么,不关闭连接,我挂在那里。那个被绞死的线程获得了锁定,所以所有其他线程都只是吸吮:D
代码:
try {
URL url = new URL(urlString);
URLConnection urlConnection = url.openConnection();
HttpURLConnection connection = (HttpURLConnection) urlConnection;
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charset.forName(CharEncoding.UTF_8)));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
最后一行是我们挂的地方。我找到了方法setConnectTimeout(timeout)
,但似乎并非如此,因为在建立连接之前它是超时的。解决这种情况的常用方法是什么?
答案 0 :(得分:3)
假设您在建立连接后意味着超时(可能在读取期间),那么
这样的事情怎么样URLConnection urlConnection = url.openConnection();
urlConnection.setConnectTimeout(c_timeout);
urlConnection.setReadTimeout(r_timeout);
stream = urlConnection.getInputStream();