美文网首页
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