我更新了NetBeans的CodenameOne插件,此后每个连接都会产生以下错误

java.lang.ClassCastException:无法将java.lang.Boolean强制转换为java.util.Hashtable
    在com.codename1.impl.CodenameOneImplementation.getCookiesForURL(CodenameOneImplementation.java:3934)
    在com.codename1.io.ConnectionRequest.performOperation(ConnectionRequest.java:308)
    在com.codename1.io.NetworkManager $ NetworkThread.run(NetworkManager.java:263)
    在com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)

用于推送通知注册的连接甚至会产生此错误。
有什么帮助吗?

最佳答案

之所以出现此问题,是因为我在一些ConnectionRequest调用中存储,删除和还原了“ Cookies”存储对象。我应该已经将ConnectionRequest的setCookiesEnabled方法设置为false。

使用了错误的代码

    try {
          ConnectionRequest connectionRequest = new ConnectionRequest() {

            @Override
            protected void initConnection(Object connection) {
                super.initConnection(connection);
                storeAndDeleteUserCookiesData();
            }

            @Override
            protected void readResponse(InputStream input) throws IOException {
            }

            @Override
            protected void postResponse() {
                restoreCookies();
            }

            @Override
            protected void handleException(Exception err) {
                restoreCookies();
            }

            @Override
            protected void handleErrorResponseCode(int code, String message) {
                restoreCookies();
            }

            @Override
            public void retry() {
                super.retry();
            }
        };

        NetworkManager.getInstance().addToQueue(connectionRequest);
    } catch (Exception ex) {
        restoreCookies();
    }



protected void storeAndDeleteUserCookiesData() {
    if (Storage.getInstance().exists("Cookies")) {
        Storage.getInstance().writeObject("Cookies_" + appName, Storage.getInstance().exists("Cookies"));
        Storage.getInstance().deleteStorageFile("Cookies");
    }
    Storage.getInstance().clearCache();
}

protected void restoreCookies() {
    Storage.getInstance().writeObject("Cookies", Storage.getInstance().readObject("Cookies_" + appName));
    Storage.getInstance().clearCache();
}


解决方法是

        ConnectionRequest connectionRequest = new ConnectionRequest() {
        };
        connectionRequest.setCookiesEnabled(false);

08-18 10:41
查看更多