Wie man dauerhafte Plätzchen mit einem DefaultHttpClient in Android bildet?

Ich benutze

// this is a DefaultHttpClient List cookies = this.getCookieStore().getCookies(); 

Jetzt, da Cookie serializeable nicht implementiert, kann ich diese Liste nicht serialisieren.

EDIT: (spezifizierte mein Ziel, nicht nur das Problem)

Mein Ziel ist es, den DefaultHttpClient mit persistenten Cookies zu verwenden.

Jeder mit Erfahrung, die mich hier auf den richtigen Weg bringen könnte? Es könnte eine andere bewährte Methode geben, die ich nicht entdeckt habe …

Erstellen Sie Ihre eigene SerializableCookie class, die implements Serializable und kopieren Sie einfach die Cookie Eigenschaften während der Konstruktion. Etwas wie das:

 public class SerializableCookie implements Serializable { private String name; private String path; private String domain; // ... public SerializableCookie(Cookie cookie) { this.name = cookie.getName(); this.path = cookie.getPath(); this.domain = cookie.getDomain(); // ... } public String getName() { return name; } // ... } 

Stellen Sie sicher, dass alle Eigenschaften auch serialisierbar sind. Abgesehen von den Primitiven implements Serializable die String class zum Beispiel selbst implements Serializable , so dass Sie sich darüber keine Gedanken machen müssen.

Alternativ können Sie das Cookie als transient Eigenschaft writeObject() / dekorieren (damit es nicht serialisiert wird) und die writeObject() und readObject() entsprechend überschreiben. Etwas wie:

 public class SerializableCookie implements Serializable { private transient Cookie cookie; public SerializableCookie(Cookie cookie) { this.cookie = cookie; } public Cookie getCookie() { return cookie; } private void writeObject(ObjectOutputStream oos) throws IOException { oos.defaultWriteObject(); oos.writeObject(cookie.getName()); oos.writeObject(cookie.getPath()); oos.writeObject(cookie.getDomain()); // ... } private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { ois.defaultReadObject(); cookie = new Cookie(); cookie.setName((String) ois.readObject()); cookie.setPath((String) ois.readObject()); cookie.setDomain((String) ois.readObject()); // ... } } 

Verwenden Sie diese class schließlich in der List .

Die Android Asynchronous Http Library unterstützt den automatischen dauerhaften Cookie-Speicher für SharedPreferences:

http://loopj.com/android-async-http/

Alternativ können Sie auch die classn PersistentCookieStore.java und SerializableCookie.java extrahieren und verwenden, wenn Sie weiterhin DefaultHttpClient verwenden möchten.