2024年2月18日发(作者:)

} } } } /** *cookieToken的获取 */ protected String getCookieToken(Cookie cookie) { return () + "@" + (); }

/** *cookie的存储 */ public void add(Cookie cookie) { String name = getCookieToken(cookie); if (!nsKey("")) { ("", new ConcurrentHashMap()); } ("").put(name, cookie); prefsWriter = (); if (nsKey("")) { ing("", (",", ("").keySet())); ing(name, encodeCookie(new SerializableHttpCookie(cookie))); (); } } public void add(HttpUrl url, Cookie cookie) { String name = getCookieToken(cookie); if (!nsKey(())) { ((), new ConcurrentHashMap()); } (()).put(name, cookie); //讲cookies持久化到本地 prefsWriter = (); if (nsKey(())) { ing((), (",", (()).keySet())); ing(name, encodeCookie(new SerializableHttpCookie(cookie))); (); } } public List get(HttpUrl url) { ArrayList ret = new ArrayList(); if (nsKey(())) ((()).values()); return ret; } public List get() { ArrayList ret = new ArrayList(); if (nsKey("")) (("").values()); return ret; } public boolean removeAll() { prefsWriter = (); (); (); (); return true; }

public boolean remove() { if (nsKey("")) { prefsWriter = (); for (Cookie cookie : ("").values()) { String name = getCookieToken(cookie); if (ns(name)) { (name); } } (""); (); ("").clear(); (""); return true; } else { return false; } } public boolean remove(HttpUrl url, Cookie cookie) { String name = getCookieToken(cookie); if (nsKey(()) && (()).containsKey(name)) { (()).remove(name); prefsWriter = (); if (ns(name)) { (name); } ing((), (",", (()).keySet())); (); return true; } else { return false; } } /** * cookies 序列化成 string * * @param cookie 要序列化的cookie * @return 序列化之后的string */ protected String encodeCookie(SerializableHttpCookie cookie) { if (cookie == null) return null; ByteArrayOutputStream os = new ByteArrayOutputStream(); try { ObjectOutputStream outputStream = new ObjectOutputStream(os); bject(cookie); } catch (IOException e) {// Log.d(LOG_TAG, "IOException in encodeCookie", e); return null; } return byteArrayToHexString(Array()); } /** * 将字符串反序列化成cookies * * @param cookieString cookies string * @return cookie object */ protected Cookie decodeCookie(String cookieString) { byte[] bytes = hexStringToByteArray(cookieString); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); Cookie cookie = null; try {

public class SerializableHttpCookie implements Serializable { private transient final Cookie cookie; private transient Cookie clientCookies; public SerializableHttpCookie(Cookie cookie) { = cookie; } public Cookie getCookies() { return clientCookies; } private void writeObject(ObjectOutputStream out) throws IOException { bject(()); bject(()); ong(sAt()); bject(()); bject(()); oolean(()); oolean(ly()); oolean(ly()); oolean(tent()); } private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { String name = (String) ject(); String value = (String) ject(); long expiresAt = ng(); String domain = (String) ject(); String path = (String) ject(); boolean secure = olean(); boolean httpOnly = olean(); boolean hostOnly = olean(); boolean persistent = olean(); r builder = new r(); builder = (name); builder = (value); builder = sAt(expiresAt); builder = hostOnly ? lyDomain(domain) : (domain); builder = (path); builder = secure ? () : builder; builder = httpOnly ? ly() : builder; clientCookies = (); }}