在 WebView 中检测 404 错误通常涉及到监听 WebView 中内容加载的状态,用于确定是否出现了404(页面未找到)错误。不同的平台和编程语言有不同的方法来实现这一功能。以下是两个常见平台的示例:
Android WebView (Java/Kotlin)
在Android中,你可以通过覆盖 WebViewClient
类的 onReceivedError()
方法来检测到404错误。例如:
javaWebView webView = findViewById(R.id.webview); webView.setWebViewClient(new WebViewClient() { @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { super.onReceivedError(view, request, error); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (error.getErrorCode() == 404) { // 在这里处理404错误 Toast.makeText(MyActivity.this, "Page not found (404)", Toast.LENGTH_LONG).show(); } } } @Override public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) { super.onReceivedHttpError(view, request, errorResponse); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (errorResponse.getStatusCode() == 404) { // 在这里处理404错误 Toast.makeText(MyActivity.this, "Page not found (HTTP 404)", Toast.LENGTH_LONG).show(); } } } }); webView.loadUrl("http://www.example.com");
注意,onReceivedError()
方法可以捕获到请求过程中出现的所有错误,包括404错误。而onReceivedHttpError()
方法专门用于捕获HTTP错误代码。
iOS WebView (Swift)
在iOS中,如果你使用的是 WKWebView
,则可以通过实现 WKNavigationDelegate
协议的 webView(_:didFailProvisionalNavigation:withError:)
和 webView(_:didFail:withError:)
方法来检测错误。
swiftimport WebKit class ViewController: UIViewController, WKNavigationDelegate { var webView: WKWebView! override func viewDidLoad() { super.viewDidLoad() webView = WKWebView(frame: view.bounds) webView.navigationDelegate = self view.addSubview(webView) if let url = URL(string: "http://www.example.com") { let request = URLRequest(url: url) webView.load(request) } } func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) { if let errorCode = (error as NSError).code, errorCode == 404 { // 处理404错误 print("Page not found (404)") } } func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) { if let errorCode = (error as NSError).code, errorCode == 404 { // 处理404错误 print("Page not found (404)") } } }
在这个示例中,如果发生了404错误,错误会被捕获,然后可以在这些代理方法中进行处理。
这些代码段展示了如何在不同平台的 WebView 上检测404错误。实际操作时,你可能还需要处理其他类型的错误,并为用户提供相应的反馈或者备选方案。
2024年6月29日 12:07 回复