2014-01-12 44 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。