0

我尝试将网页添加到我的应用程序(有效),但是当我尝试添加 cookie 时,它​​给了我这个错误:“无法使用类型为‘(URLRequest,带有:HTTPCookie?)’的参数列表调用‘加载’”

        let cookie1 = HTTPCookie(properties: [
        HTTPCookiePropertyKey.domain: "example.de",
        HTTPCookiePropertyKey.path: "/example/",
        HTTPCookiePropertyKey.secure: true,
        HTTPCookiePropertyKey.name: "PHPSESSID",
        HTTPCookiePropertyKey.value: "example"]) //this are the cookies I set 

    let example = URL(string:"example.de")
    let example2 = URLRequest(url: example!)
        webView.load(example2, with: cookie1) //here I tried to inject the cookie to the webviewload, 

我做错了什么,有人知道我必须改变什么吗?

4

1 回答 1

1

WKWebView有两种加载方法,它们采用不同的参数

func load(Data, mimeType: String, characterEncodingName: String, baseURL: URL) -> WKNavigation?

设置网页内容和基本 URL。

func loadFileURL(URL, allowingReadAccessTo: URL) -> WKNavigation?

导航到文件系统上请求的文件 URL

它没有接受 cookies 参数的加载方法。这就是导致您的错误的原因。

要真正修复它,您需要使用正确的方法通过 WKWebView 加载 cookie。这里有一些很好的例子

链接中断时的预览:

let config = WKWebViewConfiguration()  
config.processPool = WKProcessPool()  
let cookies = HTTPCookieStorage.shared.cookies ?? [HTTPCookie]()  
cookies.forEach({ config.websiteDataStore.httpCookieStore.setCookie($0, completionHandler: nil) })  

let wkWebView = WKWebView(frame: bounds, configuration: config)  
于 2019-03-14T11:53:09.070 回答