在網絡請求中,有一部分須要添加cookie,接下來就把爲web添加cookie的方法小小列舉一下,其實全部的要添加cookie的網絡請求包括web,最終都是要在request上添加,以下:web
web = [[WKWebView alloc] initWithFrame:CGRectMake(0, 64, kScreen_width, kScreen_height - 64)]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]]; NSString *cookie = [Tools readCurrentCookie]; [request addValue:cookie forHTTPHeaderField:@"Cookie"]; [web loadRequest:request];
其中得到cookie的信息我封裝了一下:cookie
+(NSString *)readCurrentCookie{ NSHTTPCookieStorage*cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage]; NSMutableString *cookieString = [[NSMutableString alloc] init]; NSMutableString *domain = [[NSMutableString alloc] initWithString:kBaseUrl_New]; NSArray *domainArr = [domain componentsSeparatedByString:@":"]; NSMutableString *domainString = [NSMutableString stringWithString:domainArr[1]]; [domainString deleteCharactersInRange:NSMakeRange(0, 2)]; NSHTTPCookie *currentCookie= [[NSHTTPCookie alloc] init]; for (NSHTTPCookie*cookie in [cookieJar cookies]) { kDLOG(@"cookie:%@", cookie); if ([cookie.domain isEqualToString:domainString]) { currentCookie = cookie; //多個字段之間用「;」隔開 [cookieString appendFormat:@"%@=%@;",cookie.name,cookie.value]; } } //刪除最後一個「;」 [cookieString deleteCharactersInRange:NSMakeRange(cookieString.length - 1, 1)]; return cookieString; }
在這裏,因爲app用到了兩個後臺,應用中保存了兩個cookie,因此我根據baseUrl來和domain來進行匹配,用以判斷哪個 是咱們所須要的cookie,進而提取出咱們須要的信息,而提取的信息則根據後臺的須要去拼接,在本例中只用到了那麼和value,因此只提取出這些信 息,添加到了web的cookie裏面,你們可根據須要進行相應的提取與拼接。值得一提的是當cookie裏面有多個字段時,字段之間須要用「;」隔開,不然添加的cookie不會被認得。網絡
另外,這是我整理的開發過程當中的小知識點彙總,一直在更新,但願對你們有一些幫助:app