2011-08-15 4 views
1

SWT Java 응용 프로그램에서 SWT 브라우저를 시작하고 사용자에게 내 웹 사이트의 뉴스 페이지를 표시하도록 표시하고 사용자 "라이브"도움말 파일을 볼 수 있습니다.SWT 브라우저로 인터넷 연결을 감지하는 방법 (또는 처리 할 서버를 사용할 수 없음)

그러나 인터넷을 사용할 수 없는지 확인하여 도움말 및 환영 페이지의 로컬, 오프라인 복사본을 표시 할 수있는 방법이 필요합니다.

: 진술, 어떤 인터넷이없는 경우

맥에 대화 상자가 팝업 "페이지로드가 오류로 인해 실패는 :. 서버에 연결할 수 없습니다"

사용자에게가는 팝업없이이 문제를 처리하고 싶습니다. (분명히 사용자에게 짜증나게합니다.) 이렇게되면 페이지를 전환 할 수 있습니다.

감사합니다.

답변

2

Detect internet Connection using Java에 대한 대답을 사용하면 인터넷에 연결되어 있는지 여부와 실시간 도움말이 작동하는지 여부를 확인할 수 있습니다. 그런 다음 연결이 끊어 지거나 도움 요청이 잘못된 경우 로컬 버전을 표시 할 수 있습니다. 여기

내가 그 일을 결국 어떻게

다음
0

이야 .. 해당하는 URL에 NET_URLLOCAL_URL 상수를 설정, 물론

import java.io.IOException; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import java.net.UnknownHostException; 

import org.eclipse.swt.SWT; 
import org.eclipse.swt.SWTError; 
import org.eclipse.swt.browser.Browser; 
import org.eclipse.swt.layout.GridData; 
import org.eclipse.swt.layout.GridLayout; 
import org.eclipse.swt.widgets.Display; 
import org.eclipse.swt.widgets.Shell; 

public class BrowserWidget { 

    private final String NET_URL = "http://eclipse.org"; 
    private final String LOCAL_URL = "file:///index.html"; 
    private String url = ""; 

    public BrowserWidget() { 
     Display display = new Display(); 
     final Shell shell = new Shell(display); 
     GridLayout gridLayout = new GridLayout(); 
     gridLayout.numColumns = 3; 
     shell.setLayout(gridLayout); 

     final Browser browser; 
     try { 
      browser = new Browser(shell, SWT.NONE); 
     } catch (SWTError e) { 
      System.out.println("Could not instantiate Browser: " + e.getMessage()); 
      display.dispose(); 
      return; 
     } 
     GridData data = new GridData(); 
     data.horizontalAlignment = GridData.FILL; 
     data.verticalAlignment = GridData.FILL; 
     data.horizontalSpan = 3; 
     data.grabExcessHorizontalSpace = true; 
     data.grabExcessVerticalSpace = true; 
     browser.setLayoutData(data); 

     shell.open(); 

     if(isInternetReachable()) browser.setUrl(NET_URL); 
     else browser.setUrl(LOCAL_URL); 

     while (!shell.isDisposed()) { 
      if (!display.readAndDispatch()) 
       display.sleep(); 
     } 
     display.dispose(); 
    } 

    private boolean isInternetReachable() { 
     HttpURLConnection urlConnect = null; 

     try { 
      // make a URL to a known source 
      URL url = new URL(NET_URL); 
      // open a connection to that source 
      urlConnect = (HttpURLConnection) url.openConnection(); 
      // trying to retrieve data from the source. If there is no connection, this line will fail 
      urlConnect.getContent(); 
     } catch (UnknownHostException e) { 
      return false; 
     } catch (IOException e) { 
      return false; 
     } finally { 
      // cleanup 
      if(urlConnect != null) urlConnect.disconnect(); 
     } 
     return true; 
    } 

    public static void main(String[] args) { 
     new BrowserWidget(); 
    } 
} 

(나는 또한 브라우저 위젯의 조각을 사용) 전체 코드입니다 :

내 코드는 대체

~ NOINTERNETURL ~ '기본'지역의 URL로 (내 SWT 브라우저 삶을 감지 L URL 및 표시 해당 페이지)

~ INTERNETURL ~ 내가 내 서버

~ INTERNETTESTURL ~ 기본적으로 내 서버에서 스크립트의 URL "VAR에 연결할 수 있는지에 가고 싶은 페이지로 HasInternet = true "

<html> 
<head> 
<meta http-equiv="refresh" content="5;url=~NOINTERNETURL~"> 
</head> 
<body> 
<script src="~INTERNETTESTURL~" type="text/javascript"></script> 
<script type="text/javascript"> 

    if (typeof HasInternet === 'undefined') { 
     window.location.href = "~NOINTERNETURL~"; 
    } 
    else { 
     window.location.href = "~INTERNETURL~"; 
    } 

</script> 
<div> 
    Testing internet connection... 
</div> 
</body> 
</html> 
관련 문제