Добавление куки в webview.load в Swift

Я пытался добавить веб-страницу в свое приложение (это работает), но когда я пытался добавить куки, он выдал мне следующую ошибку: "Невозможно вызвать" load "со списком аргументов типа" (URLRequest, with: 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, 

Что я сделал не так, кто-нибудь знал, что я должен изменить?

1 ответ

Решение

WKWebView имеет два метода загрузки, которые принимают разные параметры

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

Устанавливает содержимое веб-страницы и базовый URL.

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

Переходит к запрошенному файлу URL в файловой системе

У него нет метода загрузки, который принимает параметр cookie. Это то, что вызывает вашу ошибку.

Чтобы это исправить, вам нужно использовать правильные способы загрузки файлов cookie с помощью WKWebView. Здесь есть несколько хороших примеров

Предварительный просмотр в случае разрыва этой ссылки:

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)  
Другие вопросы по тегам