WKWebView 对 503 错误没有反应
WKWebView doesn't react to 503 error
我正在 WKWebView
.
中加载 url 请求
Charles 向我展示了 Response Code: 503 Error
这很好,因为它应该不可用,但是
webView(_:didFail:withError:)
webView(_:decidePolicyFor:decisionHandler:)
永远不会调用函数。
我应该如何处理这个错误响应?我认为代表设置得当。
import UIKit
import WebKit
class WebKitViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {
var urlRequest: URLRequest?
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
webView.navigationDelegate = self
if let urlRequest = urlRequest {
webView?.load(urlRequest)
}
}
override func loadView() {
super.loadView()
webView = WKWebView(frame: .zero)
view.addSubview(webView)
webView.uiDelegate = self
//constraints
}
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
}
func webView(_ webView: WKWebView, didFinishProvisionalNavigation navigation: WKNavigation!) {
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
}
func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
//not called while request gets 503 error
}
func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
//not called while request gets 503 error
}
}
编辑: func webView(_ webView: UIWebView, didFailLoadWithError error: Error)
完全是错误的。跳过那个。
使用此代码检查错误
optional func webView(_ webView: WKWebView,
decidePolicyFor navigationResponse: WKNavigationResponse,
decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void)
它会为你提供navigationResponse
并检查它是 503 还是 401 或其他任何内容并进行相应处理。
检查这个 link 了解更多
Link
希望对您有所帮助!
对于您使用的一种方法,您使用 UIWebView
而不是 WKWebView
。考虑添加以下方法:
func webView(WKWebView, didFail: WKNavigation!, withError: Error)
func webView(WKWebView, didFailProvisionalNavigation: WKNavigation!, withError: Error)
我正在 WKWebView
.
Charles 向我展示了 Response Code: 503 Error
这很好,因为它应该不可用,但是
webView(_:didFail:withError:)
webView(_:decidePolicyFor:decisionHandler:)
永远不会调用函数。
我应该如何处理这个错误响应?我认为代表设置得当。
import UIKit
import WebKit
class WebKitViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {
var urlRequest: URLRequest?
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
webView.navigationDelegate = self
if let urlRequest = urlRequest {
webView?.load(urlRequest)
}
}
override func loadView() {
super.loadView()
webView = WKWebView(frame: .zero)
view.addSubview(webView)
webView.uiDelegate = self
//constraints
}
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
}
func webView(_ webView: WKWebView, didFinishProvisionalNavigation navigation: WKNavigation!) {
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
}
func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
//not called while request gets 503 error
}
func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
//not called while request gets 503 error
}
}
编辑: func webView(_ webView: UIWebView, didFailLoadWithError error: Error)
完全是错误的。跳过那个。
使用此代码检查错误
optional func webView(_ webView: WKWebView,
decidePolicyFor navigationResponse: WKNavigationResponse,
decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void)
它会为你提供navigationResponse 并检查它是 503 还是 401 或其他任何内容并进行相应处理。
检查这个 link 了解更多 Link
希望对您有所帮助!
对于您使用的一种方法,您使用 UIWebView
而不是 WKWebView
。考虑添加以下方法:
func webView(WKWebView, didFail: WKNavigation!, withError: Error)
func webView(WKWebView, didFailProvisionalNavigation: WKNavigation!, withError: Error)