Подтвердить что ты не робот

Создать файл cookie для NSURLRequest?

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

 +(id)cookieWithProperties:(NSDictionary *)properties

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

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

4b9b3361

Ответ 1

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

 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.

Ответ 2

Я заметил на моем 2.2.1 iphone, что файл 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];

Ответ 3

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

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

NSMutableURLRequest* ret = [NSMutableURLRequest requestWithURL:myURL];
[ret setValue:@"myCookie=foobar" forHTTPHeaderField:@"Cookie"];

Ответ 4

Я нашел одну ошибку в примере 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];

Ответ 5

key NSHTTPCookiePath должен существовать в словаре при использовании

[NSHTTPCookie cookieWithProperties:dictionary]

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