Search code examples
iosobjective-ccocoa-touchwkwebview

WKWebView catch HTTP error codes


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?


Solution

  • 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);
    }