一、NSHTTPCookie自定义cookie
NSHTTPCookie类,
可以看到有如下几个方法:
//初始化
- (nullable instancetype)initWithProperties:(NSDictionary<NSString *, id> *)properties;
+ (nullable NSHTTPCookie *)cookieWithProperties:(NSDictionary<NSString *, id> *)properties;
//通过cookie生成requestHeaderField的字典
+ (NSDictionary<NSString *, NSString *> *)requestHeaderFieldsWithCookies:(NSArray<NSHTTPCookie *> *)cookies;
//从requestHeaderField中读取cookie
+ (NSArray<NSHTTPCookie *> *)cookiesWithResponseHeaderFields:(NSDictionary<NSString *, NSString *> *)headerFields forURL:(NSURL *)URL;
还有cookie的一些属性:
properties
version
name
value
expiresDate
domain
等用来封装cookie
二、NSHTTPCookieStorage管理类
提供管理NSHTTPCookie类的接口,在iOS中cookie只在当前应用有效。
有如下方法:
//获取单例对象
+ (NSHTTPCookieStorage *)sharedHTTPCookieStorage;
//添加/删除cookie
- (void)setCookie:(NSHTTPCookie *)cookie;
- (void)deleteCookie:(NSHTTPCookie *)cookie;
- (void)removeCookiesSinceDate:(NSDate *)date NS_AVAILABLE(10_10, 8_0);
- (void)setCookies:(NSArray<NSHTTPCookie *> *)cookies forURL:(nullable NSURL *)URL mainDocumentURL:(nullable NSURL *)mainDocumentURL;
//从特定url获取cookie
- (nullable NSArray<NSHTTPCookie *> *)cookiesForURL:(NSURL *)URL;
及如下属性:
//获取所有cookie
@property (nullable , readonly, copy) NSArray<NSHTTPCookie *> *cookies;
//设定cookieAcceptPolicy
@property NSHTTPCookieAcceptPolicy cookieAcceptPolicy; //默认是NSHTTPCookieAcceptPolicyAlways 接受所有cookie
三、一种常用的方式
在login或其他获取cookie的时候,通过NSHTTPCookieStorage的cookiesForURL方法,获取cookie,将cookie持久化保存在本地。
在需要cookie的时候再从本地读出,通过NSHTTPCookieStorage的setCookie设置cookie。