2013-03-22 5 views
5

Il mio browser (WebView) inizia con una pagina HTMLAutodetect delega - JavaFX - WebView

FILEJAVA.class.getResource ("FILEHTML.html"). ToExternalForm()

Ogni volta che accedo al google, voglio sapere se il controllo del browser, se la rete ha proxy (manuale di lavoro proxy'm)

modo che il browser mostra una finestra di dialogo per inserire il nome utente e parola d'ordine.

risposta

2

È possibile utilizzare ProxySelector per controllare il proxy. Vedere esempio successivo:

public class DetectProxy extends Application { 

    private Pane root; 

    @Override 
    public void start(final Stage stage) throws URISyntaxException { 
     root = new VBox(); 

     List<Proxy> proxies = ProxySelector.getDefault().select(new URI("http://google.com")); 
     final Proxy proxy = proxies.get(0); // ignoring multiple proxies to simplify code snippet 
     if (proxy.type() != Proxy.Type.DIRECT) { 
      // you can change that to dialog using separate Stage 
      final TextField login = new TextField("login"); 
      final PasswordField pwd = new PasswordField(); 
      Button btn = new Button("Submit"); 
      btn.setOnAction(new EventHandler<ActionEvent>() { 
       @Override 
       public void handle(ActionEvent t) { 
        System.setProperty("http.proxyUser", login.getText()); 
        System.setProperty("http.proxyPassword", pwd.getText()); 
        showWebView(); 
       } 
      }); 
      root.getChildren().addAll(login, pwd, btn); 
     } else { 
      showWebView(); 
     } 

     stage.setScene(new Scene(root, 600, 600)); 
     stage.show(); 
    } 

    private void showWebView() { 
     root.getChildren().clear(); 
     WebView webView = new WebView(); 

     final WebEngine webEngine = webView.getEngine(); 
     root.getChildren().addAll(webView); 
     webEngine.load("http://google.com"); 

    } 

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

autentificazione può richiedere codice aggiuntivo in alcuni casi, vedi Authenticated HTTP proxy with Java per i dettagli.