javafx webview 解決cookie 丟失、https圖片不顯示、設置代理

private static void loadWebView() {
    Platform.runLater(() -> {
        TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
            @Override
            public X509Certificate[] getAcceptedIssuers() {
                return null;
            }

            @Override
            public void checkClientTrusted(X509Certificate[] certs, String authType) {
            }

            @Override
            public void checkServerTrusted(X509Certificate[] certs, String authType) {
            }
        }
        };
        SSLContext sc = null;
        try {
            sc = SSLContext.getInstance("SSL");
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        try {
            sc.init(null, trustAllCerts, new java.security.SecureRandom());
        } catch (KeyManagementException e) {
            e.printStackTrace();
        }
        ProxyNode proxy = PddApi.getProxy();
        if (proxy == null) {
            JOptionPane.showMessageDialog(null, "代理IP獲取失敗,請聯繫管理員", "提示", JOptionPane.ERROR_MESSAGE);
            return;
        }
        System.setProperty("http.proxyHost", proxy.getIp());
        System.setProperty("http.proxyPort", proxy.getPort() + "");
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        HostnameVerifier allHostsValid = (hostname, session) -> true;
        HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
        String sign = "Basic " + proxy.getSign();
        HttpsURLConnection.setDefaultRequestProperty("Proxy-Authorization", sign);
        webView = new WebView();
        webView.getEngine().setJavaScriptEnabled(true);
        webView.getEngine().setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36");
        webView.setContextMenuEnabled(true);
        webView.setCache(true);
        webView.getEngine().setOnStatusChanged(event -> {
            currentUrl = webView.getEngine().getLocation();
        });
        webView.getEngine().load(HOME_PAGE);
        jFXPanel.setScene(new Scene(webView));
    });
}

 

注意:用:com.sun.webkit.network.CookieManager 不用:java.net.CookieManager

private static String getCookies() {
    CookieManager cookieManager = (CookieManager) CookieHandler.getDefault();
    try {
        Map<String, java.util.List<String>> result = cookieManager.get(new URI(currentUrl), new HashMap<>());
        java.util.List<String> cookies = result.get("Cookie");
        String cookie = cookies.get(0);
        System.out.println(cookie);
        return cookie;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章