El Capitan中的stringWithContentsOfURL cookie jar

时间:2015-10-03 10:36:04

标签: xcode cocoa cookies nsstring osx-elcapitan

我有一个小型的开源应用程序。 我使用[NSString stringWithContentsOfURL]下载网站的html并检查用户是否已登录Safari。

在El Capitan之前,一切正常:stringWithContentsOfURL使用了sharedCookiesStorage(Safari的),并以登录用户的身份返回页面的html。

但是在El Capitan中这不是这样的:stringWithContentsOfURL返回页面的html,用户没有登录。所以它不再使用Safari的cookie。 (我在Safari中登录此页面。)

El Capitan有一些变化,我必须将我的所有域名添加到NSExceptionDomains中的info.plist,因此它可以从http://获取数据,但我没有找到任何更改在最新的OSX版本中的stringWithContentsOfURL中。

可能是什么问题?在升级之前一切都很好。也许我可以某种方式将[NSHTTPCookieStorage sharedHTTPCookieStorage]传递给[NSString stringWithContentsOfURL]

获取html的实际代码是:

html = [NSString stringWithContentsOfURL:[NSURL URLWithString: [trackerSettDict objectForKey:@"loginCheckURL"]] encoding: NSUTF8StringEncoding error:&error];

测试错误的一些代码:

NSError *error;
NSString *html;
html = [NSString stringWithContentsOfURL:[NSURL URLWithString: @"https://google.com"] encoding: NSWindowsCP1251StringEncoding error:&error];
NSLog(@"%@", html);

1 个答案:

答案 0 :(得分:2)

在El Capitan,每个应用程序都有自己的cookie存储空间。您可以[NSHTTPCookieStorage sharedCookieStorageForGroupContainerIdentifier:"Cookies"]访问Safari的Cookie存储空间。