今天做了一個簡單的原生與H5交互粮宛,需要同步登陸信息皱蹦,定的方案是把用戶名蛮拔、用戶ID、token放在cookie里面预厌,加載頁面的時候傳過去。分享一下元媚。
先來創(chuàng)建一個webview
self.webview = [[UIWebView alloc] initWithFrame:self.view.bounds];
self.webview.delegate = self;
self.webview.backgroundColor = [UIColor clearColor];
[self.view addSubview: self.webview];
UIWebViewDelegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSLog(@"當(dāng)前鏈接 %@",request);
return YES;
}
- (void)webViewDidStartLoad:(UIWebView *)webView {
NSLog(@"開始加載網(wǎng)頁");
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSLog(@"網(wǎng)頁加載完畢");
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
NSLog(@"網(wǎng)頁加載出錯");
}
然后我們來加cookie
- 網(wǎng)上能找到一堆加cookie的方法轧叽,大部分是用的
NSHTTPCookieStorage
。 - 因為我要加3條cookie刊棕,所以我直接用了循環(huán)炭晒。
- 要加完cookie之后再load頁面。
NSArray *keys = @[@"hjfapp_token",@"hjfapp_id",@"hjfapp_name"];
NSArray *values = @[user.token,user.user_id,user.member_num];
for (int i = 0; i<keys.count; i++) {
NSMutableDictionary *cookieProperties = [[NSMutableDictionary alloc]init];
[cookieProperties setObject:keys[i] forKey:NSHTTPCookieName];
[cookieProperties setObject:values[i] forKey:NSHTTPCookieValue];
[cookieProperties setObject:@"site-test.beanz.cn" forKey:NSHTTPCookieDomain];
[cookieProperties setObject:@"/" forKey:NSHTTPCookiePath];
[cookieProperties setObject:@"0" forKey:NSHTTPCookieVersion];
[cookieProperties setObject:[[NSDate date] dateByAddingTimeInterval:2629743] forKey:NSHTTPCookieExpires];
NSHTTPCookie *cookieuser = [[NSHTTPCookie alloc]initWithProperties:cookieProperties];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookieuser];
}
}
NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:self.url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:20];
[self.webview loadRequest:request];
現(xiàn)在可以說一下我要寫這個的原因了
因為我之前再拼這個cookie的時候甥角,給NSHTTPCookieDomain
傳的是空网严,H5那面直接從頁面拿cookie拿不到,所以我搞了差不多一天蜈膨,試了各種加cookie的方法屿笼。好丟臉(\捂臉)
最后咱們一個一個說一下這些都干嘛的
- <b>
NSHTTPCookieName
</b>:這個就是你要傳的cookie的名字了,key。 - <b>
NSHTTPCookieValue
</b>:這個就是對應(yīng)的value了翁巍。 - <b>
NSHTTPCookieDomain
</b>:domain
翻譯過來是域名驴一,NSHTTPCookieStorage
是有方法設(shè)置只接受一類域名下的cookie,或者全部接受的灶壶。之前應(yīng)該是H5那面不接受其他域名下的cookie肝断,不太懂,有懂的請留言驰凛,謝謝胸懈。 - <b>
NSHTTPCookiePath
</b>:path如果沒有指定的話用‘/’就可以。 - <b>
NSHTTPCookieExpires
</b>:cookie的有效期恰响。 - <b>
NSHTTPCookie
</b>:NSHTTPCookie
對象代表一個HTTP cookie
趣钱。 這是一個不可改變的對象,從一個包含cookie
的屬性的字典初始化,這個類可以用來手動創(chuàng)建cookie的Properties 胚宦。 - <b>
NSHTTPCookieStorage
</b>:NSHTTPCookieStorage
提供了管理所有NSHTTPCookie
對象的接口在OS X里,cookie是在所有程序中共享的首有,而在iOS中,cookie只當(dāng)當(dāng)前應(yīng)用中有效。