2015-10-03 1 views
1

J'ai une petite application open source. J'ai utilisé [NSString stringWithContentsOfURL] pour télécharger le code HTML du site Web et vérifier si l'utilisateur a ouvert une session dans Safari.stringWithContentsOfURL cookie jar dans El Capitan

Avant El Capitan tout fonctionnait bien: stringWithContentsOfURL utilisé sharedCookiesStorage (Safari) et renvoyé le html de la page comme utilisateur connecté.

Mais dans El Capitan cela ne fonctionne pas de cette façon: stringWithContentsOfURL renvoie le code html de la page, où l'utilisateur n'est pas connecté. Il n'utilise donc plus les cookies de Safari. (Je suis connecté sur cette page dans Safari).

Il y a eu quelques changements dans El Capitan, je devais ajouter tous mes domaines à NSExceptionDomains en info.plist, afin qu'il puisse obtenir des données à partir de http: //, mais je ne l'ai pas trouvé de changements dans stringWithContentsOfURL dans la dernière version OSX .

Quel peut être le problème? Tout allait bien avant de mettre à jour. Peut-être que je pourrais en quelque sorte passer [NSHTTPCookieStorage sharedHTTPCookieStorage] à [NSString stringWithContentsOfURL]?

Le code actuel, qui obtient html est:

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

code pour tester l'erreur:

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

Répondre

2

Dans El Capitan, chaque application a son propre espace de stockage des cookies. Vous pouvez accéder au stockage des cookies de Safari par [NSHTTPCookieStorage sharedCookieStorageForGroupContainerIdentifier:"Cookies"].

+0

Merci pour votre réponse, mais comment puis-je utiliser ce cookie jar avec '[NSString stringWithContentsOfURL]'? – goooseman

+0

Et ce code fonctionnera-t-il sur pre El Capitan? – goooseman

+0

Vous pouvez utiliser ces cookies avec 'NSString' en copiant manuellement les cookies de Safari dans le stockage de votre application. Ça ne marche pas sur Yosemite. – takebayashi