W mojej aplikacji próbuję zalogować użytkownika przez UIWebView. Po pomyślnym zalogowaniu pliki cookie są ustawione w NSHTTPCookieStorage
. Kilka moich stron aplikacji jest otwartych w UIWebView.Sesja nie jest utrzymywana między UIWebView
Gdy wysyłane jest żądanie określonej strony internetowej, sprawdza ona, czy użytkownik jest zalogowany, czy nie, na podstawie plików cookie.
Sprawdziłem, czy pliki cookie są obecne w NSHTTPCookieStorage
, ale nie są poprawnymi plikami cookie na serwerze. Oznacza to, że uważa użytkownika za wylogowanego użytkownika.
Mój kod do załadunku UIWebView jest jak poniżej:
let url = serverURL + urlString
let urlRequest = NSMutableURLRequest(URL: NSURL(string: url)!)
webPage.loadRequest(urlRequest)
Nawet próbowałem z NSURLSession
i ustawianie ciasteczek jako HTTPHeaderField. Poniżej znajduje się również mój kod:
let URLRequest: NSMutableURLRequest = NSMutableURLRequest(URL: NSURL(string: url)!)
let cookies = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookiesForURL(NSURL(string: serverURL)!)
for cookie in cookies!{
URLRequest.setValue(cookie.value, forHTTPHeaderField: cookie.name)
}
let sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: sessionConfig, delegate: self, delegateQueue: nil)
let task = session.downloadTaskWithRequest(URLRequest)
task.resume()
Działa prawidłowo w kilku przypadkach. Nie mogę znaleźć problemu z plikami cookie.
Każda pomoc zostanie doceniona.
góry dzięki
Rozważ próbowanie 'WKWebView' (iOS 8+). Dzięki niemu możesz skopiować właściwość 'configuration' z ostatnio używanej instancji do nowo utworzonej i _ może to zachowa pliki cookie. Alternatywnie, użyj _jednego_ wystąpienia UIWebView allover aplikacji. – werediver
Mam podobny problem, proszę o pomoc –