嗨,我有在swift编写的IOS应用程序,有登录和成功登录后,应用程序序列号的活动,有webView。
应用程序和网站共享相同的api。登录的过程是提供正确的username并返回password token
我使用Alamofire框架作为http请求正确地管理了应用程序登录
Alamofire.request(.POST, url, parameters: param).responseJSON{ (request, response, JSONdata, error) in
if error != nil {
let result = ["Error" : "Unexpected Error!"]
callback(result: result)
} else {
if response?.statusCode == 401 {
println(401)
let result = ["Error" : "User not found!"]
callback(result: result)
} else if response?.statusCode == 200 {
let responseDict = JSONdata as! NSDictionary
callback(result:responseDict)
}
}
}这是我展示的webview代码
let requestURL = NSURL(string: "myURL")
let request = NSMutableURLRequest(URL: requestURL!)
webView.loadRequest(request)我需要在webview中显示网站它正在发生,但我需要将会话共享到webview,因为它们与应用程序共享相同的api。
有人能帮帮我吗?如何实现这一点。
发布于 2020-04-06 16:20:55
为了在应用程序和webview之间共享会话,需要在它们之间共享cookie,因此在加载webview之前设置cookie。
在此函数中,传递cookie并将请求值设置为myRequest
var myRequest : URLRequest?
func setCookie(cookie:HTTPCookie) {
let setCookites = DispatchQueue(label: "perform_task_with_cookies")
let loadWebview = DispatchQueue(label: "perform_task_with_loadwebview")
setCookites.sync {
if #available(iOS 11.0, *) {
webView.configuration.websiteDataStore.httpCookieStore.setCookie(cookie, completionHandler: nil)
} else {
HTTPCookieStorage.shared.setCookie(cookie)
HTTPCookieStorage.shared.cookieAcceptPolicy = HTTPCookie.AcceptPolicy.always
myRequest?.allHTTPHeaderFields = HTTPCookie.requestHeaderFields(with: HTTPCookieStorage.shared.cookies!)
myRequest?.httpShouldHandleCookies = true
}
}
loadWebview.sync {
if let request = self.myRequest {
self.webView.load(request)
}
}
}https://stackoverflow.com/questions/31333398
复制相似问题