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を上書きすることもできます。
  1. CookieHandler cookieHandler = CookieHandler.getDefault();  
  2. CookieManager cookieManager = (CookieManager) cookieHandler;  
  3. CookieStore cookieStore = cookieManager.getCookieStore();  
  4. URI uri = URI.create(url);  
  5. List<HttpCookie> httpCookies = cookieStore.get(uri);  
  6. if (httpCookies != null && httpCookies.size() > 0) {  
  7.     HttpCookie httpCookie = httpCookies.get(0);  
  8.     httpCookie.setVersion(0);  
  9. }  


1 件のコメント:

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

    返信削除