【问题标题】:WKWebView doesn't react to 503 errorWKWebView 对 503 错误没有反应
【发布时间】:2019-01-07 13:53:42
【问题描述】:

我正在我的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) 完全是错误的。跳过那个。

【问题讨论】:

    标签: ios swift error-handling webkit wkwebview


    【解决方案1】:

    对于您的一种方法,您使用UIWebView 而不是WKWebView。考虑添加以下方法:

    func webView(WKWebView, didFail: WKNavigation!, withError: Error)
    func webView(WKWebView, didFailProvisionalNavigation: WKNavigation!, withError: Error)
    

    【讨论】:

      【解决方案2】:

      使用此代码检查错误

        optional func webView(_ webView: WKWebView, 
        decidePolicyFor navigationResponse: WKNavigationResponse, 
        decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void)
      

      它将为您提供导航响应 并检查它是 503 还是 401 或其他任何东西并相应地处理它。

      查看此链接以了解更多信息 Link

      希望对你有帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-14
        • 2015-07-23
        • 2016-06-28
        • 2018-04-06
        • 1970-01-01
        • 1970-01-01
        • 2021-09-12
        • 1970-01-01
        相关资源
        最近更新 更多