Nella mia app sto provando ad accedere utente tramite UIWebView. In caso di successo i cookie di accesso sono impostati su NSHTTPCookieStorage
. Poche pagine della mia app sono aperte in UIWebView.La sessione non viene mantenuta tra UIWebView
Quando viene inviata una richiesta per una particolare pagina Web, controlla se l'utente ha effettuato l'accesso o meno in base ai cookie.
Ho verificato che i cookie siano presenti in NSHTTPCookieStorage
, ma non sono cookie validi sul server. Vale a dire, considera utente come utente disconnesso.
Il mio codice per il caricamento UIWebView è come qui sotto:
let url = serverURL + urlString
let urlRequest = NSMutableURLRequest(URL: NSURL(string: url)!)
webPage.loadRequest(urlRequest)
Anche ho provato con NSURLSession
e l'impostazione cookie come HTTPHeaderField. Di seguito è riportato anche il mio codice:
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()
Funziona correttamente per pochi casi. Non riesco a trovare quello che può essere un problema con i cookie.
Qualsiasi aiuto sarà apprezzato.
Grazie in anticipo
Considera di provare 'WKWebView' (iOS 8+). Con esso è possibile copiare la proprietà 'configuration' dall'ultima istanza utilizzata a una nuova creata e _maybe_ questa conserverà i cookie. In alternativa, utilizzare l'istanza _one_ di UIWebView per l'applicazione. – werediver
sto affrontando il problema simile, aiuto gentile –