WKWebView catch HTTP error codes

2020-03-08 08:30发布

When i return any http error from my page (currently 401, but i tried also with 404 and so on)

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

the delegate callbacks of the WKWebView don't return an error

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

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

How to catch such errors?

1条回答
三岁会撩人
2楼-- · 2020-03-08 08:48

The key was to wait for the response and then inspect the object, no error is called on http code

- (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);
}
查看更多
登录 后发表回答