美文网首页
iOS Swift Webview上Cookie的保存、设置

iOS Swift Webview上Cookie的保存、设置

作者: AnthonyChen | 来源:发表于2016-12-20 13:45 被阅读570次

近期做了一个需要与Webview交互的项目,需要实现网页上的自动登录功能,参考了一些OC的代码,改为Swift

首先是保存网页Cookie的方法,建议在WebView的代理方法webViewDidFinishLoad(webView: UIWebView)中调用

保存Cookie

func saveCookies() {

获取到当前的所有Cookie值

let cookies = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies

将所有Cookie转为NSData格式

let data: NSData = NSKeyedArchiver.archivedDataWithRootObject(cookies!)

将转换格式的Cookie保存

NSUserDefaults.standardUserDefaults().setObject(data, forKey: "cookie")

}

其次是往网页中添加自定义Cookie值的方法,可以与前端人员协商,判断你是否是用ios浏览登录等信息,作为特殊的标识来辨别,建议在加载Webview之前写入内存的Cookie中

添加自定义Cookie

func setCookieToWeb(cookiename:String,cookievalue:String,cookieDomain:String){

创建一个参数字典

var cookieProperties = [String: AnyObject]()

设置Cookie的名称

cookieProperties[NSHTTPCookieName] = cookiename    

设置Cookie名称对应的值

cookieProperties[NSHTTPCookieValue] = cookievalue

设置Cookie的有效域名

cookieProperties[NSHTTPCookieDomain] = cookieDomain     

设置Cookie的路径

cookieProperties[NSHTTPCookiePath] = "/"        // 路径

将字典转为Cookie

let cookies = NSHTTPCookie(properties: cookieProperties)

将Cookie的值设置到当前内存中

NSHTTPCookieStorage.sharedHTTPCookieStorage().setCookie(cookies! )

}

最后是将存储的cookie取出,再设置到内存中

获取保存的cookie并设置网页cookie

func retrieveCookies() {
判断存储的cookie

if (NSUserDefaults.standardUserDefaults().objectForKey("cookie") != nil) {

获取cookie

let cookiesdata = NSUserDefaults.standardUserDefaults().objectForKey("cookie") as! NSData

if cookiesdata.length > 0 {

将cookie转为数组

let cookies: NSArray = NSKeyedUnarchiver.unarchiveObjectWithData(cookiesdata) as! NSArray

//循环将Cookie数组内的cookie添加到内存中

for cookie  in cookies {

NSHTTPCookieStorage.sharedHTTPCookieStorage().setCookie(cookie as! NSHTTPCookie)

}

}

}

}

相关文章

网友评论

      本文标题: iOS Swift Webview上Cookie的保存、设置

      本文链接:https://www.haomeiwen.com/subject/oxnxvttx.html