Ich versuche, ein einfaches WebView zu erstellen, das eine Webseite zeigt - die Seite erfordert http-Authentifizierung für alle Seiten (zu Testzwecken).swift 3 - http-Authentifizierung in WKWebView
Hier ist mein Code:
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)
}
}
I willSendRequestForAuthenticationChallenge und didReceiveAuthenticationChallenge gefunden haben, aber keiner von ihnen genannt wird, und ich habe von der Server-Fehler, die ich nicht authentifiziert wurde.
Könnte jemand helfen?
Vielen Dank!
David
Fest Variante # 1 durch den Zusatz "_": func webView (_ webView: WKWebView, didReceive Herausforderung: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) { Lassen Sie Benutzer = "Benutzer" lassen Sie password = "pass" let Credential = URLCredential (Benutzer: Benutzer, Passwort: Passwort, Persistenz: URLCredential.Persistence.forSession) challenge.sender .use (Berechtigungsnachweis, für: challenge)? completionHandler (URLSession.AuthChallengeDisposition.useCredential, Berechtigungsnachweis) } – David
Wollten Sie WKUIDelegate verwenden? Ich habe meine View-Controller-Klasse mit WKNavigationDelegate erweitert (Einstellung von webView.navigationDelegate = self anstelle von webView.uiDelegate = self) und die folgende Funktion implementiert: func webView (_webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition , URLCredential?) -> Void) { – CScott
ja, ich teilte die Antwort bereits unter – David