AndroidでCookieの利用

AndroidでCookieの利用

Cookieは、Webサイト側がブラウザを利用している端末に一時的にデータを保存する仕組み

端末へcookieを設定すれば
設定した端末のブラウザからWebサイトへアクセスしたときに
自動的にCookieの値を送信する

これは、ログイン情報の保持に使われる

AndroidのWebViewでもCookieが使えるので
これを使って自動ログインの仕組みの実装
アプリ内ブラウザか、それともそれ以外のブラウザかをサーバーで判定できる

Cookieを使うには
アプリの開始直後に
CookieSyncManagerクラスの
createInstance()を呼び出す

そして、
onResumeハンドラ
onPauseハンドラ

startSync()
stopSync()
を記述する

そして、CookieManagerクラスの
setAcceptCookie()を呼び出せば
Cookieの利用ができる

まず、メンバ変数の宣言

private WebView mWebView;

次に、onCreate()の中へCookieを使うための設定

CookieSyncManager.createInstance(getApplicationContext());

CookieManager cm = CookieManager.getInstance();

//Cookie利用開始
cm.setAcceptCookie(true);

//期限切れのCookie削除
cm.removeExpiredCookie();

setCookie();

途中に書いた resumeExpiredCookie()は
期限切れのCookieを削除するメソッド

次に、onResume()へ
startSync()を追加

@Override
protected void onResume(){
super.onResume();
CookieSyncManager.getInstance().startSync();
}

onPause()には、stopSync()を追加

@Override
protected void onPause(){
super.onPause();
CookieSyncManager.getInstance().stopSync();
}

次に、Cookieの設定
独自のCookieを設定するには
CookieManagerクラスのsetCookie()を使う

setCookie()の第1引数にはURL
第2引数には、Cookieとして設定する文字列を指定する

まずは、setCookie()の実装

private void setCookie(){

CookieManager cm = CookieManager.getInstance();
BasicClientCookie cookie = getSampleCookie();
cm.setCookie(cookie.getDomain(), toHeaderCookie(cookie));
CookieSyncManager.getInstance().Sync();
}

サンプルのCookieのURLを作成

private BasicClientCookie getSampleCookie(){

BasicClientCookie cookie = new BasicClientCookie("CookieSampleKey", "CookieSampleValue");
cookie.setDomain("サーバーのドメイン");
cookie.setPath("/");
return cookie;
}

そして、Cookieの値の作成

private String toHeaderCookie(BasicClientCookiec){

StringBuilder sb = new StringBuilder();
sb.append(c.getName()).append("=").append(c.getValue()).append(";");

sb.append("domain").append("=").append(c.getDomain()).append(";");

sb.append("path").append("=").append(c.getPath()).append(";");

return sb.toString();
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です