2014-01-12 43 views
1

'java.net.SocketTimeoutException:连接超时'
我得到这个错误后循环一段时间后循环。 为什么我得到一个SocketTimeoutException?我怎么能解决这个错误?SocketTimeoutException异常抛出

@Override 
public void run() { 
    while (true) { 
     try { 
      URLConnection connection = getURLConnection("http://www.trekpv.com"); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
      String s; 
      while ((s = reader.readLine()) != null) { 
       System.out.println(s); 
      } 
      reader.close(); 
      Thread.sleep(5000); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

private URLConnection getURLConnection(String s) throws IOException { 
    URL url = new URL(s); 
    URLConnection urlconnection = url.openConnection(); 
    urlconnection.setConnectTimeout(10000); 
    urlconnection.setReadTimeout(10000); 
    urlconnection.addRequestProperty("Connection", "keep-alive"); 
    urlconnection.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120716 Firefox/15.0a2"); 
    urlconnection.addRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); 
    urlconnection.addRequestProperty("Accept-Language", "en-US,en;q=0.8"); 
    urlconnection.addRequestProperty("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3"); 
    return urlconnection; 
} 

回答

0

'连接超时'表示根本没有响应。可能有防火墙的方式。

1

当指定的URL未在特定的持续时间内获取时,会发生SocketTimeoutException。这可能是因为互联网连接速度慢,或者代码中存在一些故障,导致无法获取url。