iPhoneのネイティブコードでCookieを操作する方法

アドウェイズの波切です。皆さん、こんにちは。

実は今回は、急遽代打でブログを書くことになったのですが、幸いなことに僕が所属しているチームでは、毎週みんなで技術情報についてTipsを出し合っているので、そこから1本ストックを持ってくることができました!

リーダーに感謝!チームに感謝です。

iPhoneCookieを扱う2つの方法

さて、iPhoneでは、Cookieを扱うのに(私の知る限り)2つの方法があります。

①NSHTTPRequestのsetAllHTTPHeaderFieldsという関数でCookieのヘッダー情報
を書き込む方法

②NSCookieStorageを使って、送信するCookieを管理する方法

最初は、サーバサイドのプログラミングの発想で、RequestオブジェクトのCookieを操作する方法を思いついて、①の方法で直接Cookieを送るコードを書いていたのですが、この方法だと、HTTPのヘッダーを直接書き換えないといけないため、CookieをParseする必要が出てきたりして、非常に手間がかかります。

大変なので、もう少し別の方法がないか調べたところ、
クライアントで保存するCookieを書き換える、②の方法を見つけました。

・サンプルコード

サンプルコードは、下記のようになります。

Cookieを生成

Cookieを取得

Cookieを全て消す(セッションID以外)



・雑感

CookieがNSArrayで保持されているため、ループで回して処理をしなければならないのが残念です。
実際に業務で使う際は、Dictionaryで処理を行えるようにラッパーを用意した方が良いかもしれませんね。

また、今回ご紹介したどちらの方法でもありえるのですが、僕が嵌った点として、誤ってSessionIDを消してしまうと、Web側でセッションが取れなくなってしまうので、ご注意を…。