[英]Open URL in new browser with new session and cookies using SWT
我想在外部瀏覽器中使用新會話和URL的cookie打開一個URL。 每次打開URL時,都應在帶有新cookie的新瀏覽器中打開。 我的問題是,每當我嘗試在新瀏覽器中打開URL時,舊會話就會過期,舊的瀏覽器窗口也不再有用。 URL參數每次都不同。 我嘗試使用內部瀏覽器以及SWT的外部瀏覽器。 試過Browser.setCookies(value,url);
仍然無法正常工作。
對於外部瀏覽器:
public void openUrl(String url){
IWebBrowser browser = PlatformUI.getWorkbench()
.getBrowserSupport()
.createBrowser(IWorkbenchBrowserSupport.AS_EXTERNAL, browserId, name, tooltip);
browser.openUrl(url);
}
對於內部瀏覽器:
public void launchUrl(String url){
Browser browser = (Browser) getBrowserShellNew().getData(BROWSER); // Browser is a static String "BROWSER"
browser.setUrl(url);
}
private Shell getBrowserShellNew(){
Display display=PlatformUI.getWorkbench().getDisplay();
Shell shell = new Shell(display);
shell.setText("title");
Rectangle screenBounds = null;
if (display.getMonitors().length > 1) {
screenBounds = display.getMonitors()[1].getBounds();
} else {
screenBounds = display.getMonitors()[0].getBounds();
}
shell.setBounds(screenBounds);
shell.setLayout(new FillLayout());
shell.setMaximized(true);
Browser browser = new Browser(shell, SWT.NONE);
browser.setMenu(new Menu(browser));
shell.setData(BROWSER, browser);
shell.open();
shell.forceActive();
shell.forceFocus();
return shell;
}
原因必須是,所有瀏覽器實例都使用來自會話的相同cookie。 需要以某種方式為每個URL啟動創建一個包含cookie的新會話。 使用外部瀏覽器。
我認為你有三個選擇:
1) Browser.clearSessions()
2) OS.InternetSetOption(0, OS.INTERNET_OPTION_END_BROWSER_SESSION, 0, 0);
3)如果您在Windows計算機上或其他操作系統中的相應文件夾中,請刪除%AppData%\\Roaming\\Microsoft\\Windows\\Cookies
的內容...
祝好運...
經過一些調查后,我發現了通過在啟動URL時將參數傳遞給IE來實現此目的的方法。 正如我在評論中已經提到的那樣。 以下是適合我的解決方案。
Runtime.getRuntime().exec("C:\\Program Files\\internet explorer\\iexplore.exe -noframemerging \"http://helloworld.com\"");
注意:這僅適用於IE和Windows操作系統。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.