作者starkite (可乐果)
看板MacDev
标题[问题] 用webview 登入 cookies问题
时间Thu Oct 31 17:01:11 2013
搞了好久没有什麽头绪 来跟大大求救@@
用了一个TabBarController
A tabbar要使用一个webview load一个login的网页
所以要在网页上做帐号登入的动作
B tabbar里要call一个user资料的api
但是要先判定user是否已经登入,登入状态确定後call api才会回传资料
登入的状态由後台确认,所以我储存要a tabbar中登入後的cookie,
开启b tabbar後,将此cookie设为HTTPHeader用GET跟後台要回传资料
後台判定此cookie後回传资料
请问要如何抓取登入後产生的cookie
目前我是在a tabbar中sub一个uiwebview,开启登入网页
-(void)viewDidAppear:(BOOL)animated{
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage
sharedHTTPCookieStorage];
for (NSHTTPCookie *cookie in [cookieJar cookies]) {
NSLog(@"cookie is%@", cookie);
}
}
可以看到所有的cookies,直接让app帮我存,但是我不知道怎麽看登入後的cookie
只能重新点回此a tab看cookie
b tab中
NSURLRequest *req = [NSURLRequest requestWithURL:myurl];
NSArray *cookiesForDomain = [[NSHTTPCookieStorage sharedHTTPCookieStorage]
cookiesForURL:myurl];
NSDictionary * headers = [NSHTTPCookie requestHeaderFieldsWithCookies:
cookiesForDomain];
[req setAllHTTPHeaderFields:headers];
[req setHTTPMethod:@"GET"];
NSError *requestError;
NSURLResponse *urlResponse = nil;
NSData *response1 = [NSURLConnection sendSynchronousRequest:req
returningResponse:&urlResponse error:&requestError];
NSString* responseString = [[NSString alloc] initWithData:
response1 encoding: NSUTF8StringEncoding] ;
直接在a tab中登入後,直接开启b tab可以直接抓到回传资料
但是从多工关掉app重新开启,直接进入b tab 就无法抓到资料,
表示後台并无认证此cookie,请问要怎麽正确使用get时set header
也用过
NSArray *cookiesForDomain = [[NSHTTPCookieStorage sharedHTTPCookieStorage]
cookiesForURL:myurl];
for (NSHTTPCookie *cookie in cookiesForDomain) {
NSString *cookieString = [NSString stringWithFormat:@"%@=%@", [cookie name], [cookie value]];
[req setValue:cookieString forHTTPHeaderField:@"Cookie"];
}
[req setHTTPMethod:@"GET"];
这样虽然重新开启app还是可以log到cookie,但是一样无法抓取回传资料
连在a tab中先登入再开启b tab 也没有资料回传
打的有点多@@ 麻烦大大们帮忙
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.162.165