2012-08-24 2 views
-2

WebView에서 웹 페이지를 표시하는 간단한 앱이 있습니다. URL 중 하나가 아직 온라인 상태가 아니기 때문에 나는 온라인이 아니며 실제로있을 때 URL을로드하는 축배를 만들고 싶습니다.URL로드 여부 캐치

누군가 어떻게 그 방법을 알고 있습니까?

미리 감사드립니다.

답변

2

URLConnection을 열고 먼저 연결의 응답 코드를 확인하십시오. 이것이 404 인 경우 사이트가 존재하지 않는다는 의미입니다. 그런 다음 필요한 모든 사이트 누락 된 항목을 처리 할 수 ​​있습니다. 예제 코드 :

try { 
     Url url = new URL(someStringUrl); 
     HttpURLConnection huc = (HttpURLConnection) url.openConnection(); 
     if(huc.getResponseCode() == 404) { 
      //Site doesnt exist, returned 404 error 
     } 
} catch(Exception e) { 
    e.printStackTrace(); 
} 
+0

감사는 내가 URL로 문자열을 사용합니다. – user1534326

+0

@ user1534326 편집 내역보기 –

+0

그게 전부 겠지. – DaShaun

0

,

public class Exception404 extends Exception { 
} 

말을 한 후 2 개 개의 다른 예외를 잡을 수 있습니다 당신은 자신의 예외를 확장 할 수

HttpURLConnection huc = null; 

try { 
    Url url = new URL(someStringUrl); 
    huc = (HttpURLConnection) url.openConnection(); 
    if(huc.getResponseCode() == 404) 
     throw new Exception404(); 

    //... 
    //... 
    //... 

} catch(Exception404 e) { 
    e.printStackTrace();  
} catch(Exception e) { 
    e.printStackTrace(); 
} finally { 
    //close connection (saves battery life time) 
    huc.disconnect(); 
} 

아니면 그냥 같은 예외가 모두 처리 던질 수를 동일한 방법으로 오류가 발생합니다.

+0

이것은 내 것과 어떻게 다른가요? 그들은 둘 다 똑같은 결과를 가지고 있습니다, 제 첫 번째 게시 ...? 큰 차이가 있다면, 그냥 누락 될 수 있다고 말해주십시오. –

+0

예, 맞습니다. 그러나 예외를 던지면 try 블록의 끝에서 예기치 않은 결과를 처리하기 때문에 코드를 좀 더 읽기 쉽습니다. 또한, 아마도 다음 함수에 의해 처리되지 않을 것이지만,이 함수를 호출 한 함수에 의해 304 (이후 수정되지 않은)를 던질 필요가 있습니다. 이것은 성공/실패시 부울을 전달하는 것보다 더 확신합니다. –

+0

또한, ve는 안드로이드 장치 (배터리 수명 시간 절약)의 라디오를 켭니다 try 블록의 끝에 연결을 닫았습니다 –

0

글쎄요 ...

그것은 "url.openconnection"에 오류가 제공되도록
try { 
     // Write your code to access the website here 

} 캐치 (예외 전자) {

// Your execution will reach here once the site can't be reached 

Toast.makeText(Your_Activity.this, "Site still not online",duration).show(); 

}는 거의 대답