iOS Swift Webview上Cookie的保存、設置自定義Cookie值

近期做了一個需要與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 App開發中的Cookie 一、何為Cookie Cookie是網站為了便是終端身份,保存在終端本地的用戶...
    o本是后山人o偶作前堂客o閱讀 3,750評論 1 8
  • cookie機制采用的是在客戶端保持 HTTP 狀態信息的方案 Cookie是在瀏覽器訪問WEB服務器的某個資源時...
    葛高召閱讀 3,042評論 0 0
  • 在APP開發中,cookie也開始變的越來越重要了。為了更好的切換,注銷和登錄賬戶,就必須熟悉cookie的用法。...
    hzy1314閱讀 545評論 0 0
  • 在APP開發中,cookie也開始變的越來越重要了。為了更好的切換,注銷和登錄賬戶,就必須熟悉cookie的用法。...
    IceWall_Rin閱讀 504評論 0 2
  • 前言 關于UIWebView的介紹,相信看過上文的小伙伴們,已經大概清楚了吧,如果有問題,歡迎提問。 本文是本系列...
    CoderLF閱讀 9,016評論 2 12