URL Session(Cookie)

URL Session(NSURLSession)

URL Session(NSURLSessionDataTask))

URL Session(NSURLSessionUploadTask)

URL Session(NSURLSessionDownloadTask)

URL Session(Cache).md

URL Session(Cookie)


当你访问一个网站时,NSURLRequest都会帮你主动记录下来你访问的站点设置的cookie,如果Cookie存在的话,会把这些信息放在NSHTTPCookieStorage容器中共享,当你下次再访问这个站点时,NSURLRequest会拿着上次保存下来了的cookie继续去请求。

cookie和缓存一样有两个类控制。

  1. NSHTTPCookieStorage:Cookie管理器。
  2. NSHTTPCookie:Cookie实际对象。

1 NSHTTPCookieStorage

NSHTTPCookieStorage实际是一个共享的单例对象,它存储整个应用的所有Cookie,并在所有线程中是同步的。

1.1 获取NSHTTPCookieStorage

// 获取共享的NSHTTPCookieStorage
public class func sharedHTTPCookieStorage() -> NSHTTPCookieStorage
// 获取应用程序组的NSHTTPCookieStorage
public class func sharedCookieStorageForGroupContainerIdentifier(identifier: String) -> NSHTTPCookieStorage

1.2 获取和设置Cookie访问策略

public var cookieAcceptPolicy: NSHTTPCookieAcceptPolicy

public enum NSHTTPCookieAcceptPolicy : UInt {
    case Always // 全部允许
    case Never // 全部不允许
    case OnlyFromMainDocumentDomain // 只允许顶级地址的cookie通过
}

1.3 增加和删除Cookie

// 增加cookie
public func setCookie(cookie: NSHTTPCookie)
// 增加cookie的同时绑定地址
public func setCookies(cookies: [NSHTTPCookie], forURL URL: NSURL?, mainDocumentURL: NSURL?)
// 删除指定cookie
public func deleteCookie(cookie: NSHTTPCookie)
// 根据日期删除cookie
public func removeCookiesSinceDate(date: NSDate)

1.4 获取Cookie

// 获取所有cookie
public var cookies: [NSHTTPCookie]? { get }
// 根据路径放回cookie
public func cookiesForURL(URL: NSURL) -> [NSHTTPCookie]?
// 获取所有cookie并排序
public func sortedCookiesUsingDescriptors(sortOrder: [NSSortDescriptor]) -> [NSHTTPCookie]

1.5 通知

// cookieAcceptPolicy变动通知
public let NSHTTPCookieManagerAcceptPolicyChangedNotification: String
// cookie 变化
public let NSHTTPCookieManagerCookiesChangedNotification: String

2 NSHTTPCookie

NSHTTPCookie是cookie的实际对象。这里不再详细描述,有兴趣的朋友查阅API《NSHTTPCookie Class Reference

3 实战演练

//
//  YJHTTPCookieVC.swift
//  NSURLSession
//
//  Created by yangjun on 15/12/5.
//  Copyright © 2015年 阳君. All rights reserved.
//

import UIKit

/// NSHTTPCookie
class YJHTTPCookieVC: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // 共享cookie
        let sharedHTTPCookie = NSHTTPCookieStorage.sharedHTTPCookieStorage()

        // 手动创建一个cookie
        var dict = [String : AnyObject]()
        dict[NSHTTPCookieName] = "阳君"
        dict[NSHTTPCookieValue] = "937447974"
        dict[NSHTTPCookieVersion] = 1
        dict[NSHTTPCookieDomain] = "blog.csdn.net"
        dict[NSHTTPCookiePath] = "/"
        if let cookie = NSHTTPCookie(properties: dict) {
            print("手动创建\(cookie.properties)")
            sharedHTTPCookie.setCookie(cookie)
        }

        // 删除所有
        if let list = sharedHTTPCookie.cookies {
            // 获取cookie的header
            print(NSHTTPCookie.requestHeaderFieldsWithCookies(list))
            for cookie in list {
                // 读取cookie
                print(cookie.properties)
                // 删除cookie
                sharedHTTPCookie.deleteCookie(cookie)
            }
        }
    }

}

 


其他

参考资料

URL Session Programming Guide

NSHTTPCookie Class Reference

[NSHTTPCookie Class Reference]

文档修改记录

时间描述
2015-12-05博文完成
2015-12-12更改链接

版权所有

CSDN:http://blog.csdn.net/y550918116j

GitHub:https://github.com/937447974/Blog

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值