Проблема с вашим кодом заключается в том, что вы разбиваете каждую строку, которую вы прочитали, с помощью line_api = line.split(',')[2]
, а [2]
ссылается на третий элемент, который существует в этом списке, который является xxxxxxxxx
или yyyyyyyyy
, затем, когда вы позвоните self.api = res[0]
, вы ссылаетесь на первый (и единственный) элемент в этом списке.
self.api = res[1]
всегда будет выдавать ошибку, потому что она никогда не будет существовать в списке из 1 элемента. Я не уверен, какова была цель этого утверждения, но я бы предложил использовать элегантное решение DirtyBit
Это - то, как Вы устанавливаете свойства в 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
.
Я заметил, на мой 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];
Я не мог заставить это работать.
Однако у меня это заработало:
NSMutableURLRequest* ret = [NSMutableURLRequest requestWithURL:myURL];
[ret setValue:@"myCookie=foobar" forHTTPHeaderField:@"Cookie"];