2014年5月24日土曜日

HttpURLConnection + CookieManager で RFC 2109 しかサポートしていないサーバーに対応する

HttpClient + CookiePolicy.BROWSER_COMPATIBILITY

でうまくいっていたものが、

HttpURLConnection + CookieManager

でうまくいかないときは、サーバーが RFC 2965 に対応していない可能性があります。RFC 2109 しかサポートしていないサーバーに対応するには、HttpCookieのバージョンに 0 を指定します。

このことは、HttpURLConnectionのページ の「Sessions with Cookies」に書いてあります。このページでは新しくHttpCookieを作っていますが、次のように保存されているHttpCookieを上書きすることもできます。 CookieHandler cookieHandler = CookieHandler.getDefault(); CookieManager cookieManager = (CookieManager) cookieHandler; CookieStore cookieStore = cookieManager.getCookieStore(); URI uri = URI.create(url); List<HttpCookie> httpCookies = cookieStore.get(uri); if (httpCookies != null && httpCookies.size() > 0) { HttpCookie httpCookie = httpCookies.get(0); httpCookie.setVersion(0); }

1 件のコメント:

  1. android初心者です。いろいろと学ばせていただいています。ありがとうございます。

    返信削除