iPhone版
CookieをiPhone側でセット/削除する方法 – 風日記
iphone – Where are an UIWebView’s cookies stored? – Stack Overflow
を見た。
iPhone側はすごく簡単で、WebViewでリクエストを投げると、それだけでASIHTTPRequest(ネイティブ)のリクエストと共有されていた。
Cookieの内容を確認するにはNSHTTPCookieStorageを使うとすぐに見ることができる。
サンプル・コード
NSHTTPCookie *cookie; NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage]; for (cookie in [cookieJar cookies]) { NSLog(@"%@", cookie); if ([@"lab.hisasann.com" isEqualToString:cookie.domain]) { NSLog(@"name - %@", cookie.name); NSLog(@"value - %@", cookie.value); } }
gist
iPhoneでWebViewのCookieを共有する方法 — Gist
Android版
Androidのほうはやや複雑、WebViewのリクエストが完了するイベントで、すでにインスタンス化してあるHttpClientに対して、Cookieをaddしないといけない。
これをしないと、HttpClient(ネイティブ)のリクエストにCookieが乗ってくれない。
サンプル・コード
webview.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { System.out.println("onPageFinished - " + url); super.onPageFinished(view, url); // Cookieの保存が予想されるURLの場合 if (url.indexOf("http://lab.hisasann.com/") > -1) { // WebViewのCookieを取得 String cookie = CookieManager.getInstance().getCookie(url); System.out.println("cookie - " + cookie); String[] cookies = cookie.split(";"); for (String keyValue : cookies) { keyValue = keyValue.trim(); String[] cookieSet = keyValue.split("="); // Cookieを作成 BasicClientCookie bCookie = new BasicClientCookie(cookieSet[0], cookieSet[1]); bCookie.setDomain("lab.hisasann.com"); bCookie.setPath("/"); // CookieStoreを取得 CookieStore store = httpClient.getCookieStore(); // Cookieを追加 store.addCookie(bCookie); } } } });
Cookieの内容を確認するにはCookieStoreを使うとすぐに見ることができる。
サンプル・コード
CookieStore store = httpClient.getCookieStore(); List<Cookie> cookies = store.getCookies(); for (Cookie cookie : cookies) { // クッキーの設定 if ("lab.hisasann.com".equals(cookie.getDomain())) { // クッキーを再設定 System.out.println(cookie.getName() + "=" + cookie.getValue()); break; } }
つまり、ひとつのHttpClientインスタンスにCookieをセットしているので、複数のHttpClientをnewする場合は、それぞれにCookieを入れないとダメっぽい。
gits
AndroidでWebViewのCookieを共有する方法 — Gist
どうでもいいことだが
iPhoneの
NSURL *url = [NSURL URLWithString:@"http://lab.hisasann.com/cookie/setcookie.php"];
はhttp:/でも動いた。つまりスラッシュが一個足りない!
Androidではダメでした。
作ればわかる!Androidプログラミング―10の実践サンプルで学ぶAndroidアプリ開発入門 (Smart Mobile Developer)
posted with amazlet at 12.11.08
金宏 和實
翔泳社
売り上げランキング: 2320
翔泳社
売り上げランキング: 2320