2013-06-26 2 views
0

웹 사이트의 HTML을 가져 오기 위해 서버에 쿼리하고 있지만 서버에 버그가 있고 응답이없는 경우가 있습니다. 내 방법으로 잡을 수는 있지만 시간이 많이 걸리며 코드가 림보에 걸렸다. 이 오류는 rd = new BufferedReader (new Input ... line)에서 발생합니다. 서버가 2 ~ 2 초 내에 응답을 반환하지 않으면 타이머를 사용하여 코드를 강제 종료하는 방법이 있습니까? 코드가 실행 매 몇 백 번이 버그까지.타이머를 사용하여 끊어진 선을 강제로 실행

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

코드를 다른 스레드에 넣을 수 있습니다. 스레드를 시작한 후 스레드의 플래그가 설정되거나 x 초가 지날 때까지 sleep을 수행합니다. 그런 다음 주 프로그램을 계속 진행합니다.

관련 문제