[英]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.