【发布时间】:2016-02-16 10:10:09
【问题描述】:
在我的应用程序中,我试图通过 UIWebView 登录用户。成功登录后,cookie 会设置在 NSHTTPCookieStorage 中。我的应用页面很少在 UIWebView 中打开。
当发送特定网页的请求时,它会根据 cookie 检查用户是否登录。
我检查了 NSHTTPCookieStorage 中是否存在 cookie,但它们在服务器上不是有效的 cookie。也就是说,它将用户视为已注销的用户。
我的加载 UIWebView 的代码如下:
let url = serverURL + urlString
let urlRequest = NSMutableURLRequest(URL: NSURL(string: url)!)
webPage.loadRequest(urlRequest)
即使我尝试使用 NSURLSession 并将 cookie 设置为 HTTPHeaderField。下面也是我的代码:
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()
在少数情况下它可以正常工作。我找不到 cookie 可能存在的问题。
我们将不胜感激。
提前致谢
【问题讨论】:
-
考虑尝试
WKWebView(iOS 8+)。有了它,您可以将configuration属性从上次使用的实例复制到新创建的实例中,也许这将保留 cookie。或者,在整个应用程序中使用 一个 UIWebView 实例。 -
我也遇到了类似的问题,请帮忙
标签: swift uiwebview nsurlconnection nshttpcookiestorage