【问题标题】:setcookie in cookiemanager not working on Androidcookiemanager 中的 setcookie 在 Android 上不起作用
【发布时间】:2015-07-30 17:16:29
【问题描述】:

我在 androidapp 中使用 cookiemanager。 我调用了一个 cookiemanager 实例并尝试使用 cookiemanager.setcookie(url,string) 设置 cookie。

但是我的 cookiemanager 实例没有设置任何 cookie。我尝试检查 SO 上的每个答案,但无法解决问题。任何有想法的人都会非常有帮助。

 public void syncCookieStoreToWebView() {
    PersistentCookieStore myCookieStore = ReferenceHolder.getCookieStore();
    List<Cookie> cookies = myCookieStore.getCookies();

    final CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(getActivity());
    CookieSyncManager.getInstance().startSync();

    final CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.setAcceptCookie(true);
    if (! cookies.isEmpty()){

        //sync all the cookies in the httpclient with the webview by generating cookie string
        for (Cookie cookie : cookies){
            Cookie sessionInfo = cookie;

            String cookieString = sessionInfo.getName() + "=" + sessionInfo.getValue() + "; domain=" + sessionInfo.getDomain();

            cookieManager.setCookie(ReferenceHolder.BASE_URL, cookieString);



            cookieSyncManager.sync();

        }
        cookieSyncManager.sync();

        System.out.println("COOKIEMAN" + cookieManager.getCookie(ReferenceHolder.BASE_URL));


    }

}

【问题讨论】:

    标签: java android http cookies android-studio


    【解决方案1】:

    David Wasser 和 AnswerZhao 的回答是对的,根据我的经验,您可以像这样设置每个 key=value 使用 setCookie

    for (Cookie cookie : cookies){
                Cookie sessionInfo = cookie;
                // set first key=value
                String cookieStr = sessionInfo.getName() + "=" + sessionInfo.getValue();
                cookieManager.setCookie(ReferenceHolder.BASE_URL, cookieStr);
                // set second key=value
                cookieStr = "domain=" + sessionInfo.getDomain();
                cookieManager.setCookie(ReferenceHolder.BASE_URL, cookieStr);
                // set ... key=value
    
                cookieSyncManager.sync();
    
            }
    

    【讨论】:

      【解决方案2】:

      cookie 不能包含分号,因为分号表示 cookie 字符串中的分隔符。如果你想要这个,请先编码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-26
        • 2014-09-27
        • 1970-01-01
        • 2015-03-25
        • 1970-01-01
        • 1970-01-01
        • 2012-08-07
        相关资源
        最近更新 更多