web-dev-qa-db-ja.com

WKWebViewはHTTPエラーコードをキャッチします

私のページからhttpエラーを返すとき(現在は401ですが、404などでも試しました)

http://min60.com/__personal/e401.php

wKWebViewのデリゲートコールバックがエラーを返さない

- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error

- (void)webView:(WKWebView *)webView didFailNavigation:(null_unspecified WKNavigation *)navigation withError:(NSError *)error {

そのようなエラーをキャッチする方法は?

19
Peter Lapisu

重要なのは、応答を待ってからオブジェクトを検査することでした。httpコードでエラーは呼び出されません。

- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler {

    if ([navigationResponse.response isKindOfClass:[NSHTTPURLResponse class]]) {

        NSHTTPURLResponse * response = (NSHTTPURLResponse *)navigationResponse.response;
        if (response.statusCode == 401) {

            // here we go

        }

    }
    decisionHandler(WKNavigationResponsePolicyAllow);
}
36
Peter Lapisu