WKWebView添加cookie

在網絡請求中,有一部分須要添加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

        http://my.oschina.net/u/2461772/blog/620788
dom

相關文章
相關標籤/搜索