日々精進

新しく学んだことを書き留めていきます

CookieをSerializeする/SerializableなObjectをStringに変換する

Cookieを永続化することになったので調べた。android-async-httpのPersistentCookieStoreを使うと簡単に永続化できそうだけど、そのためにライブラリをインストールするのはイヤだったので自作しました。

CookieクラスはSerializableを継承していないので、Serializeするには別のクラスにデータを詰め替える必要がある。 以下のSerializableCookie.javaを使うのが楽でした。

android-async-http/SerializableCookie.java at master · loopj/android-async-http · GitHub

SerializableなObjectをStringに変換するには、以下のメソッドを使う。JDKにこういうメソッドないのかな。。

/** Read the object from Base64 string. */

private static Object fromString( String s ) throws IOException , ClassNotFoundException { byte [] data = Base64.getDecoder().decode( s ); ObjectInputStream ois = new ObjectInputStream( new ByteArrayInputStream( data ) ); Object o = ois.readObject(); ois.close(); return o; }

/** Write the object to a Base64 string. */
private static String toString( Serializable o ) throws IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream( baos );
    oos.writeObject( o );
    oos.close();
    return Base64.getEncoder().encodeToString(baos.toByteArray()); 
}

これで無事オブジェクトをDBに保存したり復元したり出来るようになった。

参考: