Я пытаюсь сделать мой экземпляр менеджера Alamofire автоматически запоминает & набор печенья, вот моя неудачная попытка:Помня печенье с Alamofire
let cfg = NSURLSessionConfiguration.defaultSessionConfiguration()
let cooks = NSHTTPCookieStorage.sharedHTTPCookieStorage()
// makes no difference whether it's set or left at default
cfg.HTTPCookieStorage = cooks
cfg.HTTPCookieAcceptPolicy = NSHTTPCookieAcceptPolicy.Always
let mgr = Alamofire.Manager(configuration: cfg)
mgr.request(NSURLRequest(URL: NSURL(string: "http://httpbin.org/cookies/set?stack=overflow"))).responseString {
(_, _, response, _) in
var resp = response // { "cookies": { "stack": "overflow" } }
// becomes empty if cfg.HTTPCookieStorage set to nil
}
mgr.request(NSURLRequest(URL: NSURL(string: "http://httpbin.org/cookies"))).responseString {
(_, _, response, _) in
var resp = response // { "cookies": {} }
// always empty no matter what
}
cooks.cookiesForURL(NSURL(string: "http://httpbin.org/cookies")) // 0 elements
Первый URL посылает Set-Cookie : stack=overflow; Path=/
заголовок, а затем перенаправляет (302) в /cookies
(эквивалент второго URL); это отлично работает в моем браузере (как только я ударил первый URL, второй URL-адрес всегда отображает этот файл cookie), поэтому я хотел бы воспроизвести это поведение с помощью Alamofire.
Пробовали ли вы предоставление печенье самостоятельно, используя 'HTTPAdditionalHeaders'and добавления заголовка Cookie в' NSURLSessionConfiguration'? – Pintouch
@Pintouch Я уверен, что это сработает, но я бы хотел использовать уже существующие функции хранения файлов cookie, а не отслеживать файлы cookie и вручную настраивать заголовок. –
Да, я понимаю, но ваш код выглядит хорошо для меня. Попробуйте открыть проблему в решении проблемы с AlamoFire GitHub – Pintouch