SwiftCommon之Cookie处理

Easter79
• 阅读 743

概述

在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

tips:

本文由wp2blog导入,原文链接:http://devonios.com/sccookie.html

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
2个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
2年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Stella981 Stella981
2年前
Selenium(十二):操作Cookie、调用JavaScript、HTML5的视频播放
1\.操作Cookie有时候我们想要验证浏览器中cookie是否正确,因为基于真实cookie的测试是无法通过白盒和集成测试的。WebDriver提供了操作Cookie的相关方法,可以读取、添加和删除cookie信息。WebDriver操作cookie的方法:get\_cookies():获得所有cookie信息
Stella981 Stella981
2年前
Django用户认证
COOKIE与SESSION概念cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生。cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上cookie,这
Stella981 Stella981
2年前
PHP的cookie与Javascript的cookie的关系
PHP读写cookie的语句:setcookie("user","Lilu",time()3600);echo$_COOKIE"user";javascript读写cookie代码:functionSetCookie(name,value)//两个参数,一个是cookie的名子,一
Easter79 Easter79
2年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Stella981 Stella981
2年前
Cookie技术
一、Cookie技术Cookie技术是将用户的数据存储到客户端的技术,我们分为两方面学习:第一,服务器端怎样将一个Cookie发送到客户端第二,服务器端怎样接受客户端携带的Cookie1.服务器端向客户端发送一个Cookie1)创建Cookie:CookiecookienewCookie(StringcookieName,
Stella981 Stella981
2年前
Django组件——cookie与session
Django组件——cookie与session<fontcolor00bff一、会话跟踪技术</font<fontcolorff7f501、什么是会话跟踪技术</font先了解一下什么是会话。可以把
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k