Я пытаюсь создать простой WebView, который показывает веб-страницу - страница требует проверки подлинности HTTP для всех страниц (для целей тестирования).swift 3 - аутентификация http в WKWebView
Вот мой код:
class ViewController: UIViewController, WKUIDelegate {
var webView: WKWebView!
override func loadView() {
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
view = webView
}
// #1 variant
func webView(webView: WKWebView, willSendRequestForAuthenticationChallenge challenge:
URLAuthenticationChallenge, completionHandler: (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
let user = "user"
let password = "pass"
let credential = URLCredential(user: user, password: password, persistence: URLCredential.Persistence.forSession)
challenge.sender?.use(credential, for: challenge)
}
// #2 variant
func webView(webView: WKWebView, didReceiveAuthenticationChallenge challenge: URLAuthenticationChallenge, completionHandler: (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
let user = "user"
let password = "pass"
let credential = URLCredential(user: user, password: password, persistence: URLCredential.Persistence.forSession)
challenge.sender?.use(credential, for: challenge)
}
override func viewDidLoad() {
super.viewDidLoad()
let myURL = URL(string: "https://myurl.com")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
}
Я нашел willSendRequestForAuthenticationChallenge и didReceiveAuthenticationChallenge, но ни один из них не называется, и я получил сообщение об ошибке с сервера, что я не прошедшего проверку подлинности.
Может ли кто-нибудь помочь?
Большое вам спасибо!
Дэвид
Fixed вариант # 1, добавляя "_": функ WebView (_ Webview: WKWebView, didReceive challenge: URLAuthenticationChallenge, completeHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) { let user = "user" let password = "pass" пусть удостоверения = URLCredential (пользователь: пользователь, пароль: пароль, настойчивость: URLCredential.Persistence.forSession) challenge.sender .use (удостоверение, для: вызова)? completionHandler (URLSession.AuthChallengeDisposition.useCredential, удостоверение) } – David
Вы имели в виду использовать WKUIDelegate? Я расширил класс контроллера вида с помощью WKNavigationDelegate (установка webView.navigationDelegate = self вместо webView.uiDelegate = self) и включил следующую функцию: func webView (_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completeHandler: @escaping (URLSession.AuthChallengeDisposition , URLCredential?) -> Void) { – CScott
да, я поделился ответом уже ниже – David