同じ問題はフォーラムでも報告されていました。
情報が少ないと言って閉じられているようですが。
NからOpenJDK に移行するにあたり、expiresでパースできるDateFormatが変わったようです。
N以前
N
NのexpiresのDateFormatはRFCの定義に沿っているようです(10.1.2 Expires and Max-Age)。
N以前もNも、定義されていないフォーマットの場合maxAgeに0がセットされます。
CookieStoreの実装も変更されています。
N以前ではaddメソッド内で追加時にCookieの値のチェックはありませんでしたが、NではmaxAgeが0の場合はcookiejarに追加されません。
つまりN以前でCookieManagerから取得できていた`Mon, 29 Aug 2016 21:15:00 -0000` のようなフォーマットのexpiresをもつCookieは、Nでは取得できないことになります。
expiresのパースに失敗したらCookieStoreに追加しない、というのはRFCに従えというのはそうですが、ちょっと困るケースもあります。
暫定的な処置としてmaxAgeを上書きしCookieManagerに再度追加するコード例です。
https://gist.github.com/mochico/c1acf4ca0d5caf76d29fd12d239053f3
2016.12.31 追記
https://code.google.com/p/android/issues/detail?id=220564
こちらの問題修正されたそうで近いうちにリリースされるそうです。
今からだと7.1.2以降ですかね。
2016.12.31 追記
https://code.google.com/p/android/issues/detail?id=220564
こちらの問題修正されたそうで近いうちにリリースされるそうです。
今からだと7.1.2以降ですかね。
0 件のコメント:
コメントを投稿