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.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
.
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];
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"];
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];
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 @"\\"
.
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