如何在Swift中手动为UIWebView设置Cookie

时间:2016-05-10 11:08:56

标签: ios objective-c swift

我需要在swift中为webview设置一个cookie。我找到了一个解决方案,但它是针对objective-c的。怎么在Swift中做到?

Is it possible to set a cookie manually using sharedHTTPCookieStorage for a UIWebView?

这是解决方案。

1 个答案:

答案 0 :(得分:21)

您可以使用NSHTTPCookieNSHTTPCookieStorageswift中设置Cookie,从而执行以下操作:

let URL = "example.com"
let ExpTime = NSTimeInterval(60 * 60 * 24 * 365)

func setCookie(key: String, value: AnyObject) {
    var cookieProps = [
        NSHTTPCookieDomain: URL,
        NSHTTPCookiePath: "/",
        NSHTTPCookieName: key,
        NSHTTPCookieValue: value,
        NSHTTPCookieSecure: "TRUE",
        NSHTTPCookieExpires: NSDate(timeIntervalSinceNow: ExpTime)
    ]

    var cookie = NSHTTPCookie(properties: cookieProps)

    NSHTTPCookieStorage.sharedHTTPCookieStorage().setCookie(cookie!)
}

斯威夫特3:

func setCookie(key: String, value: AnyObject) {
    let cookieProps: [HTTPCookiePropertyKey : Any] = [
        HTTPCookiePropertyKey.domain: URL,
        HTTPCookiePropertyKey.path: "/",
        HTTPCookiePropertyKey.name: key,
        HTTPCookiePropertyKey.value: value,
        HTTPCookiePropertyKey.secure: "TRUE",
        HTTPCookiePropertyKey.expires: NSDate(timeIntervalSinceNow: ExpTime)
    ]

    if let cookie = NSHTTPCookie(properties: cookieProps) {
        NSHTTPCookieStorage.sharedHTTPCookieStorage().setCookie(cookie)
    }
}

设置cookieAcceptPolicy如下:

NSHTTPCookieStorage.sharedHTTPCookieStorage().cookieAcceptPolicy = NSHTTPCookieAcceptPolicy.Always

Swift 3

HTTPCookieStorage.shared.cookieAcceptPolicy = HTTPCookie.AcceptPolicy.always

请注意,这是Objective-C和旧版Swift中的NSHTTPCookieAcceptPolicyAlways

希望这会有所帮助:)