2014-12-30 3 views
0

Мне нужно установить NSHTTPCookie таким образом, чтобы он истекал в Сессия. Я использовал следующий код для установки свойств этого файла cookie.iOS: Сохранение файла cookie, который истекает при сеансе

NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary]; 

[cookieProperties setObject:@"mycookiename" forKey:NSHTTPCookieName]; 
[cookieProperties setObject:@"mycookievalue" forKey:NSHTTPCookieValue]; 
[cookieProperties setObject:[NSNumber numberWithBool:TRUE] forKey:NSHTTPCookieSecure]; 
[cookieProperties setObject:@"com.mydomain" forKey:NSHTTPCookieDomain]; 
[cookieProperties setObject:@"com.mydomain" forKey:NSHTTPCookieOriginURL]; 
[cookieProperties setObject:@"/" forKey:NSHTTPCookiePath]; 
[cookieProperties setObject:@"0" forKey:NSHTTPCookieVersion]; 

NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieProperties]; 
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie]; 

Однако оба вышеуказанных свойств установить срок для 1 января 2001 2:00:00 GMT + 2 вместо установки на истечение сессии

ответ

3

Вы должны взглянуть на sessionOnly Недвижимость. Apple Documentation

Это говорит:

логическое значение, которое указывает, должен ли приемник быть отброшены в конце сеанса (независимо от даты истечения срока действия). (только для чтения)

ДА Если приемник должен быть отброшен в конце сеанса (независимо от срока годности), в противном случае НЕТ.

Вы также можете посмотреть на превосходной библиотеке ASIHTTPRequest

Он имеет некоторые полезные методы, которые могут помочь вам. С их How-To:

В этом случае «куки сессии» относятся ко всему печенью, созданным во время сеанса, а печенье, срока действия (часто упоминается как сессионные куки), которые удаляются, когда приложение завершает работу ,

Возможно, вы захотите создать NSHTTPCookie с установленным сроком годности.

Эта информация может быть найдена в компании Apple Docs:

срок действия получателя, или ноль, если нет конкретной даты истечения, например, как в случае «только на время сеанса» печеньем. Дата истечения срока действия - это дата, когда файл cookie должен быть удален.

Для этого:

NSDictionary *properties = [[[NSMutableDictionary alloc] init] autorelease]; 
[properties setValue:[@"Test Value" encodedCookieValue] forKey:NSHTTPCookieValue]; 
[properties setValue:@"ASIHTTPRequestTestCookie" forKey:NSHTTPCookieName]; 
[properties setValue:@".allseeing-i.com" forKey:NSHTTPCookieDomain]; 

//Here you can set expiration date 
[properties setValue:[NSDate dateWithTimeIntervalSinceNow:60*60] forKey:NSHTTPCookieExpires];  
[properties setValue:@"/asi-http-request/tests" forKey:NSHTTPCookiePath]; 
NSHTTPCookie *cookie = [[[NSHTTPCookie alloc] initWithProperties:properties] autorelease]; 
+0

я знаю, что собственность, но я хочу, чтобы построить NSHTTPCookie с sessionOnly свойством = TRUE – hariszaman

+0

@hariszaman увидеть мой отредактированный ответ – dehlen

+0

я попробовал, что тоже, но это не chaneg результат , см. мой отредактированный вопрос – hariszaman