Создать куки для NSURLRequest? - PullRequest
23 голосов
/ 28 марта 2009

Я пытаюсь отправить строку аутентификации через cookie в NSMutableURLRequest. Я пытаюсь создать NSHTTPCookie через

 +(id)cookieWithProperties:(NSDictionary *)properties

Но нигде не удалось найти, как указать свойства, отличные от простой пары ключ-значение, которую я имею для аутентификации. Когда я использую только свою пару ключ-значение, возвращается ноль.

Будем весьма благодарны за любые примеры, документацию или мысли по этому поводу.

Ответы [ 5 ]

38 голосов
/ 02 июля 2009

На моем iPhone 2.2.1 я заметил, что файл cookie не создается, если не указан NSHTTPCookiePath, даже если в документах он указан как «необязательный»:

Итак, я делаю:

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];
19 голосов
/ 28 марта 2009

Вот как вы устанавливаете свойства в куки:

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

В приведенном выше примере: url, testCookies и 1 - это значения . Аналогично, NSHTTPCookieOriginURL, NSHTTPCookieName, NSHTTPCookieValue - это ключи для объекта NSDictionary, как в парах ключ-значение .

Вы устанавливаете / получаете свойства, используя NSDictionary и добавляете к NSHTTPCookie.

7 голосов
/ 16 июля 2009

Я не мог заставить это работать.

Я получил это, чтобы работать однако:

NSMutableURLRequest* ret = [NSMutableURLRequest requestWithURL:myURL];
[ret setValue:@"myCookie=foobar" forHTTPHeaderField:@"Cookie"];
6 голосов
/ 15 декабря 2011

Я нашел одну ошибку в примере jm: NSHTTPCookiePath должен быть @"/", но не @"\\\\".

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];
0 голосов
/ 18 апреля 2013

ключ NSHTTPCookiePath должен присутствовать в словаре при использовании

[NSHTTPCookie cookieWithProperties:dictionary]

метод с использованием NSHTTPCookieDomain или NSHTTPCookieOriginURL. И значение для NSHTTPCookiePath должно быть @"/", а не @"\\".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...