簡體   English   中英

cookiemanager 中的 setcookie 不適用於 Android

[英]setcookie in cookiemanager not working on Android

我在 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));


    }

}

cookie 不能包含分號,因為分號在 cookie 字符串中表示分隔符。 如果你想要這個,請先編碼。

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();

        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM