Открыть URL в новом браузере с новым сеансом и файлами cookie с помощью SWT - PullRequest
0 голосов
/ 13 мая 2019

Я хочу открыть 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;
}

Причина должна быть, все экземпляры браузера используютте же куки с сессии.Нужно как-то создать новый сеанс с куки для каждого запуска URL.Использование внешнего браузера.

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Ну, после некоторого исследования я нашел способ добиться этого, передав параметр в IE при запуске URL. как я уже упоминал в комментариях к ответу. Ниже приведено решение, которое сработало для меня.

Runtime.getRuntime().exec("C:\\Program Files\\internet explorer\\iexplore.exe -noframemerging \"http://helloworld.com\"");

Примечание: это будет работать только для IE и операционной системы Windows.

0 голосов
/ 15 мая 2019

Я думаю, у вас есть три варианта:

1) Browser.clearSessions()

2) OS.InternetSetOption(0, OS.INTERNET_OPTION_END_BROWSER_SE­SSION, 0, 0);

3) Удалите содержимое %AppData%\Roaming\Microsoft\Windows\Cookies, если вына компьютере с Windows или соответствующей папке в другой ОС ...

Удачи ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...