最近開發新功能,其中有載入網頁的需求,而最近又瞭解到了WKWebView,說是耗記憶體小、載入速度快、與JS的互動好。因為需要與網頁進行互動,而之前使用UIWebView發現與網頁的互動並不是很好,於是這次決定使用WKWebView。
在體會著使用新控制項且更好的控制項的喜悅的時候,一個新的問題出現了--載入網頁,後台無法及時擷取cookie。後台無法及時擷取cookie,在載入網頁的時候就無法載入到正確的資料。(需要多載入幾次網頁,才能載入到正確的資料)
在查閱相關資料後,發現在使用WKWebView的時候需要我們手動添加cookie到網頁中。而之前使用的UIWebView會自動cookie,所有也就不用我們擔心後台無法及時擷取cookie的問題。
在使用WKWebView的時候手動添加cookie:
NSMutableDictionary *cookieDic = [NSMutableDictionary dictionary];
NSMutableString *cookieValue = [NSMutableString stringWithFormat:@""];
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *cookie in [cookieJar cookies]) {
[cookieDic setObject:cookie.value forKey:cookie.name];
}
// cookie重複,先放到字典進行去重,再進行拼接
for (NSString *key in cookieDic) {
NSString *appendString = [NSString stringWithFormat:@"%@=%@;", key, [cookieDic valueForKey:key]];
[cookieValue appendString:appendString];
}
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:self.url]];
[request addValue:cookieValue forHTTPHeaderField:@"Cookie"];
NSLog(@"添加cookie");
[self.webView loadRequest:request];