2013-06-26 3 views
0

Я запрашиваю сервер (который я не писал), чтобы получить HTML-код для веб-сайта, но на сервере есть некоторые ошибки и иногда не возвращает ответ. У меня есть улов в моем методе, но требуется много минут, чтобы вбить меня, и в то же время мой код застрял в подвешенном состоянии. Ошибка возникает в rd = new BufferedReader (новая строка ввода ... Есть ли способ использовать таймер, чтобы заставить мой код выйти из метода, если сервер не возвращает ответ в течение второго или двух? с этой ошибкой только каждые пару сотен раз код работает.Принудительная прерывание с таймером

public String getHTML(String urlToRead) { 
    URL url; 
    HttpURLConnection conn; 
    BufferedReader rd; 
    String line; 
    String result = ""; 
    try { 
     url = new URL(urlToRead); 
     conn = (HttpURLConnection) url.openConnection(); 
     conn.setRequestMethod("GET"); 
     rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
     while ((line = rd.readLine()) != null) { 
      result += line; 
     } 
     rd.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return result; 
} 

ответ

4

использовать существующие методы тайм-аут, setConnectTimeout(int) и setReadTimeout(int).

Если раз вне, java.net.SocketTimeoutException поднимается.


Несвязанные, но не рассматривайте не ловлю Exception.

+0

+1 не знал об этих ... –

0

Вы можете положить код в другую тему. После запуска потока вы делаете sleep до тех пор, пока не будет установлен флаг в потоке или пока не пройдет x секунд. Затем вы продолжаете работу с основной программой.

Смежные вопросы