2011-12-19 69 views
1

我想从远程服务器获取一些数据。为了达到这个我使用HttpURLConnection。问题是,有时连接后的服务器建立只是挂起或什么,没有关闭连接,我挂在那里。也是挂线程获得了锁,那么所有其他所有线程都只是吸吮:d 代码:Java http读取超时问题

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

超时连接建立之前?那么你不会一直到while循环,或者我误解了一些东西? – posdef 2011-12-19 15:49:42

+0

对不起,我写了不明白在这里。我的意思是在类HttpURLConnection中找到这样的方法;)没有超时在我的代码.. – whatswrong 2011-12-20 10:09:04

+0

无后顾之忧我很高兴,如果我可以帮助解决这个问题,不管它是什么:) – posdef 2011-12-20 10:18:07

回答

3

假设你的意思是超时(读期间可能)建立连接后,如何对这样的事情

URLConnection urlConnection = url.openConnection(); 
urlConnection.setConnectTimeout(c_timeout); 
urlConnection.setReadTimeout(r_timeout); 
stream = urlConnection.getInputStream(); 
+0

哦,我没有找到这种方法。似乎读取超时将解决此问题。谢谢!将尝试明天。 – whatswrong 2011-12-19 15:51:20