Как проверить, если WKWebView URLAuthenticationChallenge не удалось или успешно? - PullRequest
0 голосов
/ 04 сентября 2018

Я использую WKWebView, чтобы открыть URL-адрес, но до этого он аутентифицирует пользователя. Он работает нормально, когда мы вводим правильные учетные данные, но в случае неправильных учетных данных я не могу найти делегата или функцию, которая может обнаружить сбой.

Код:

func webView(_ webView: WKWebView, didReceive challenge: 
    URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
        let user = "user"
        let password = "password"
        let credential = URLCredential(user: user, password: password, persistence: URLCredential.Persistence.forSession)
        completionHandler(URLSession.AuthChallengeDisposition.useCredential, credential)

    }

Я могу обнаружить previousFailureCount из URLAuthenticationChallenge, в случае неудачного ответа errorResponse всегда выдает код состояния: 401. Есть ли лучший способ обнаружить сбой или успех для URLAuthenticationChallenge?

1 Ответ

0 голосов
/ 22 мая 2019

Вы можете получить код состояния из ответа. Реализуйте метод делегата

func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse,
             decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
    if let response = navigationResponse.response as? HTTPURLResponse {
        if response.statusCode == 401 {
            decisionHandler(.cancel)
        } else {
            decisionHandler(.allow)
        }
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...