JavaFX WebView获取网页Cookie

在使用JavaFX开发浏览器的时候 会遇到需要使用webview获取cookie的情况,下面介绍用CookieManager 的方式获取,亲测可用,

首先创建一个按钮,利用按钮的点击事件打开一个网页,然后等网页打开后,关闭窗体的时候调用获取cookie的函数,就可以拿到cookie公我们的桌面应用使用了主要这里的 CookieManager  需要导import com.sun.webkit.network.CookieManager; 这个包,不然运行会报错,不过报错信息也会提示你的

@FXML

protected  void loginAction()throws IOException {

Stage stage =new Stage();

    stage.setWidth(1280);

    stage.setHeight(850);

    stage.setTitle("登录窗体");

    ////要注意fxml文件的类路径写法(与本JavaFXController.java的相对关系)

    //特别要注意第二窗体对应的view的fxml文件路径写法(view和controller都放在各自的包下):

    //不用问为什么要加../  我也不知道  可能HomeController 在 com.mitcub.controller下

    //FXMLLoader loader = new FXMLLoader(getClass().getResource("../login.fxml"));

//Scene scene = new Scene(loader.load(),1280,850);

//LoginController controller = loader.getController();

//controller.webView = new WebView();

    WebView webView =new WebView();

    final WebEngine webEngine = webView.getEngine();

    ScrollPane scrollPane =new ScrollPane();

    scrollPane.setFitToHeight(true);

    scrollPane.setFitToWidth(true);

    scrollPane.setContent(webView);

    webEngine.getLoadWorker().stateProperty()

.addListener(new ChangeListener() {

@Override

                public void changed(ObservableValue ov, Worker.State oldState, Worker.State newState) {

if (newState == Worker.State.SUCCEEDED) {

currentUrl =webEngine.getLocation();

                    }

}

});

    if(AppUtil.isBlank(cookie)) {

webEngine.load(baseUrl);

    }else{

webEngine.load(baseUrl+"Member/index");

    }

Scene scene =new Scene(webView,1280,850);

    scene.setRoot(scrollPane);

    stage.setScene(scene);

    stage.initModality(Modality.APPLICATION_MODAL);//模式窗体

    stage.setOnCloseRequest(new EventHandler() {

@Override

        public void handle(WindowEvent event) {

System.out.println("window close event");

            //event.consume();

            cookie = getCookies();

           // settingView.setCookie(cookie);

        }

});

    stage.show();

}

private StringgetCookies(){

CookieManager cookieManager = (CookieManager) CookieHandler.getDefault();

    try {

Map> result = cookieManager.get(new URI(currentUrl), new HashMap<>());

        java.util.List cookies = result.get("Cookie");

        String cookie = cookies.get(0);

    //    System.out.println(cookie);

        return cookie;

    }catch (Exception e) {

e.printStackTrace();

    }

return null;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。