Ответ 1
AFNetworking не делает ничего явно с файлами cookie, поэтому нет способа "AFNetworking" для работы с файлами cookie. Вы будете работать с NSHTTPCookie и NSHTTPCookieStorage.
В моих проектах мне не нужно было делать что-то конкретное для запросов, чтобы заставить их работать с файлами cookie. Если вам требуется различное поведение запроса, чем предоставляется AFNetworking по умолчанию, вы переопределяете requestWithMethod:path:parameters:
в подклассе AFHTTPClient
.
-
Чтобы получить куки, возвращенные из AFJSONRequest, например
NSURLRequest* request = <some request returned from your AFHTTPClient subclass> AFJSONRequestOperation* op = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest* request, NSHTTPURLResponse* response, id userData) { NSArray* cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:[response allHeaderFields] forURL:url]; } failure:...
-
Этот ответ говорит, чтобы установить дату истечения срока действия cookie. Если вы хотите сохранить файлы cookie самостоятельно, вы можете преобразовать файлы cookie в словарь и сохранить их. В этом ответе говорится, что нужно использовать цепочку ключей.
NSMutableDictionary* cookieDictionary = [NSMutableDictionary dictionaryWithDictionary:cookiePrefs]; for (NSHTTPCookie* cookie in cookies) { [cookieDictionary setValue:cookie.properties forKey:cookie.name]; }
-
Удалите файлы cookie из NSHTTPCookieStorage. Существует некоторая хитрость, которой нужно следить. Если вы сами сохранили файлы cookie, удалите сохраненные значения.
NSArray* cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:theUrl]; for (NSHTTPCookie* cookie in cookies) { [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie]; }