Salut, je développe une application Iphone dans laquelle je veux mettre des cookies après la réponse du server et l'utiliser pour une autre request. Ma request de réseau ressemble à.
NSURLSession *session = [NSURLSession sharedSession]; [[session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { NSHTTPURLResponse *httpResp = (NSHTTPURLResponse*) response; NSLog(@"sttaus code %i", httpResp.statusCode); if (error) { [self.delegate signinWithError:error]; } else { [self.delegate signinWithJson:data]; } }] resume];
Mais je ne sais pas comment mettre les cookies. Je sais que je dois utiliser NSHTTPCookieStorage
mais je ne sais pas comment définir. Et je veux aussi utiliser ces cookies pour une autre request. Y at-il quelqu'un qui sait à ce sujet? Besoin d'aide pour. Je vous remercie.
Voir J'ai essayé de cette façon
NSURLSession *session = [NSURLSession sharedSession]; [[session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { if(error) { [self.delegate signinWithError:error]; } else { NSHTTPURLResponse *httpResp = (NSHTTPURLResponse*) response; [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways]; NSHTTPCookie *cookie; NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary]; NSDictionary* headers = [(NSHTTPURLResponse *)response allHeaderFields]; for(NSSsortingng *key in [headers allKeys]) { NSLog(@"%@ ..PPPP ... %@",key ,[headers objectForKey:key]); [cookieProperties setObject:[headers objectForKey:key] forKey:key]; } [cookieProperties setObject:[[NSDate date] dateByAddingTimeInterval:2629743] forKey:NSHTTPCookieExpires]; cookie = [NSHTTPCookie cookieWithProperties:cookieProperties]; [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie]; [self.delegate signinWithJson:data]; } }] resume];
Je suis intéressé par un seul champ d'en Set-Cookie SSID=kgu62c0fops35n6qbf12anqlo7; path=/
tête Set-Cookie SSID=kgu62c0fops35n6qbf12anqlo7; path=/
Set-Cookie SSID=kgu62c0fops35n6qbf12anqlo7; path=/
Vous pouvez probablement vous contenter d'utiliser sharedHTTPCookieStorage
pour NSHTTPCookieStorage
, puis utiliser setCookies:forURL:mainDocumentURL:
ou le seul setCookie:
– ce dernier pourrait être mieux adapté à vos besoins.
Si cela ne fonctionne pas, vous devrez peut-être configurer NSURLSessionConfiguration
et définir NSHTTPCookieStorage
Les docs ne l'indiquent pas, mais defaultSessionConfiguration
peut quand même utiliser le magasin partagé.
NSURLSession *session = [NSURLSession sharedSession]; [[session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { NSHTTPURLResponse *httpResp = (NSHTTPURLResponse*) response; NSArray *cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:[response allHeaderFields] forURL:[response URL]]; [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookies:cookies forURL:[response URL] mainDocumentURL:nil]; NSLog(@"sttaus code %i", httpResp.statusCode); if (error) { [self.delegate signinWithError:error]; } else { [self.delegate signinWithJson:data]; } }] resume];
J'ai beaucoup étudié mais j'en ai trouvé un sur un site internet d'une autre langue. La solution consiste à append un gestionnaire d'events vide pour le début et la fin de la session:
protected void Session_Start(object sender, EventArgs e) { } protected void Session_End(object sender, EventArgs e) { }