Utworzyć plik cookie dla NSURLRequest?

Próbuję wysłać łańcuch uwierzytelniania za pomocą pliku cookie w NSMutableURLRequest. Próbuję stworzyć NSHTTPCookie poprzez

 +(id)cookieWithProperties:(NSDictionary *)properties

Ale nigdzie nie byłem w stanie znaleźć sposobu określenia właściwości innych niż prosta para klucz-wartość, którą mam do uwierzytelniania. Gdy używam tylko mojej pary klucz-wartość, zwracane jest nil.

Wszelkie przykłady, dokumentacja lub przemyślenia na ten temat byłyby bardzo mile widziane.
Author: Michael Grinich, 2009-03-28

5 answers

Tak ustawiasz właściwości w pliku cookie:

 NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys:
                              url, NSHTTPCookieOriginURL,
                              @"testCookies", NSHTTPCookieName,
                              @"1", NSHTTPCookieValue,
                              nil];
  NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:properties];

W powyższym przykładzie: url, testCookies, i 1 są wartościami . Podobnie, NSHTTPCookieOriginURL, NSHTTPCookieName, NSHTTPCookieValue są to klucze dla obiektu NSDictionary, jak w parach klucz-wartość .

Ustawiasz / pobierasz właściwości używając NSDictionary i dodajesz do NSHTTPCookie.

 19
Author: Jordan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-14 19:35:44

Zauważyłem na moim iPhonie 2.2.1, że plik cookie nie został utworzony, jeśli NSHTTPCookiePath nie jest określony, nawet jeśli jest pokazany jako "opcjonalny" W dokumentach:

Więc tak:

NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys:
                            @"domain.com", NSHTTPCookieDomain,
                            @"/", NSHTTPCookiePath,  // IMPORTANT!
                            @"testCookies", NSHTTPCookieName,
                            @"1", NSHTTPCookieValue,
                            nil];
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:properties];

NSArray* cookies = [NSArray arrayWithObjects: cookie, nil];

NSDictionary * headers = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];

[request setAllHTTPHeaderFields:headers];
 38
Author: jm.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-22 04:58:22

Nie mogłem tego uruchomić.

Mam to jednak działać:

NSMutableURLRequest* ret = [NSMutableURLRequest requestWithURL:myURL];
[ret setValue:@"myCookie=foobar" forHTTPHeaderField:@"Cookie"];
 7
Author: titaniumdecoy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-14 04:06:34

Znalazłem jeden błąd w przykładzie jm: NSHTTPCookiePath powinno być @"/", ale nie @"\\\\".

NSDictionary *properties = [NSDictionary dictionaryWithObjectsAndKeys:
                            @"domain.com", NSHTTPCookieDomain,
                            @"/", NSHTTPCookiePath,  // IMPORTANT!
                            @"testCookies", NSHTTPCookieName,
                            @"1", NSHTTPCookieValue,
                            nil];
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:properties];

NSArray* cookies = [NSArray arrayWithObjects: cookie, nil];

NSDictionary * headers = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];

[request setAllHTTPHeaderFields:headers];
 6
Author: Serhiy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-04 09:20:04

Klucz {[1] } powinien istnieć w słowniku przy użyciu

[NSHTTPCookie cookieWithProperties:dictionary]

Metoda z użyciem NSHTTPCookieDomain lub NSHTTPCookieOriginURL. A wartość dla NSHTTPCookiePath powinna wynosić @"/", a nie @"\\".

 0
Author: Dexter Xiong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-18 10:09:58