SwiftCommon之Cookie处理

By | 2015年7月28日

概述

在IOS中,cookie数据是由NSHTTPCookieStorage类来管理的,从其类名可以看出,这是一个仓库,一个专门存放Cookie数据的仓库。我们从中获取一个Cookie,得到到的是一个NSHTTPCookie类,它包装了一个完整的Cookie,我们通过这个类可以获取Cookie的各种信息。

在默认情况下,当一个网络请求接收到Cookie数据时,会自动保存下来,下次请求会自动带上Cookie,我们无需插手。不过我们也要清楚如何取查询这些被保存的Cookie。

SCCookie类是一个简单的封装,通过几个类方法可以快速获得需要的Cookie值。

SCCookie类

import Foundation

/// 访问Cookie的相关方法
public class SCCookie{


    /// 获取存放Cookie的Storage
    public class func GetCookieStorage()->NSHTTPCookieStorage{
        return NSHTTPCookieStorage.sharedHTTPCookieStorage()
    }

    /// 获取所有Cookie数组
    public class func GetCookieArray()->[NSHTTPCookie]{

        let cookieStorage = GetCookieStorage()
        let cookieArray = cookieStorage.cookies
        if let arr = cookieArray{
            return cookieArray as! [NSHTTPCookie]
        }
        else{
            return []
        }
    }

    /// 获取Cookie值
    public class func GetCookieByName(let cookieName:String)->String?
    {
        let cookieArray:[NSHTTPCookie] = GetCookieArray()
        var value:String?
        if cookieArray.count > 0
        {

            for cookie in cookieArray
            {

                if cookie.name == cookieName
                {
                    value = cookie.value
                    break
                }
            }
        }
        return value
    }

    /// 根据Cookie内容数据,获取一个对应的NSDictionary数据
    public class func GetRequestFiledByCookie(let cookieAttay:[NSHTTPCookie])->NSDictionary{

        let requestFiled = NSHTTPCookie.requestHeaderFieldsWithCookies(cookieAttay)
        return requestFiled as NSDictionary
    }
}

Git地址

http://devonios.com/go/swiftcommon