有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java BrowserField Cookie删除

我正在使用RIM JRE 6制作一个黑莓应用程序。首次创建BrowserField时,将创建cookie。在特定时刻(取决于用户输入),必须删除cookie。为此,我打开一个BrowserField,并尝试删除BrowserField中存储的Cookie。目前,据我所知,RIM api中没有提供显式删除BrowserField Cookie的方法,因此我使用BrowserField类中给出的executeScript方法来执行一些javascript来删除Cookie。javascript在运行requestContent方法之前在OnuineEngineAttached方法中执行。但这会导致应用程序崩溃,并出现IllegalStateException和以下消息:

Unable to execute script - script engine does not exist

我不认为这是javascript没有初始化为on的结果,因为它在BrowserFieldConfig类中默认为on。但我不确定我的javascript格式是否正确。这是我正在使用的代码:

protected void onUiEngineAttached(boolean attached)
{
    if(attached)
    {
                    // ... Removed unnecessary code
        // Retrieve the cookie manager for the embedded browser
        BrowserFieldCookieManager cookieManager = _browserField.getCookieManager ();
        if (eraseCookie == true)
        {
            String temp = cookieManager.getCookie ("someSite");
            while (temp.indexOf ("testCookie") != -1)
            {
                    _browserField.executeScript("javascript:document.cookie = \"testCookie=; expires=Thu, 01-Jan-70 00:00:01 GMT\"");
            }
        }
        // Requests browser to go to URL with body and header information
        _browserField.requestContent(_url, _body.getBytes(), _header);
    }
};

这可能是线程问题,但我不确定如何解决。因此,我们非常感谢您的帮助

多谢各位


共 (3) 个答案

  1. # 1 楼答案

    另一种根本不使用cookie的方法是在BrowserFieldConfig内使用此属性,如果您有意这样做的话

    BrowserFieldConfig config = new BrowserFieldConfig();  
    config.setProperty(BrowserFieldConfig.ENABLE_COOKIES, Boolean.FALSE);
    
  2. # 2 楼答案

    我无法帮助你使用BrowserFieldCookieManager,但这是一个非常有用的网站,它让我开始使用并提供了我用于cookie管理的脚本(如果没有其他内容,它应该会让你了解BrowserFieldCookieManager在幕后做什么,以及如何让它做你想做的事情)

    http://www.quirksmode.org/js/cookies.html

    特别是看看它是如何删除cookies的,用立即过期的空cookies替换它们

  3. # 3 楼答案

    到目前为止,我还没有使用BrowserFieldCookieManager接口,但是您是否尝试在cookie管理器上调用setCookie(url,null)或setCookie(url,“”),以清除cookie?我意识到API文档在这一领域非常稀少。如果这两种方法都不起作用,请尝试将cookie替换为已经过期的cookie

    另一种选择是在创建BrowserField实例时替换您自己的cookie管理器。请参阅BrowserFieldConfig的文档:

    http://www.blackberry.com/developers/docs/5.0.0api/net/rim/device/api/browser/field2/BrowserFieldConfig.html