UIWebView didFailWithError не отвечает за 404 ошибки - PullRequest
0 голосов
/ 11 ноября 2010

Я реализую приложение, которое имеет UIWebView.Моя проблема в том, что мне нужно отобразить предупреждение, когда не удается загрузить веб-просмотр с URL.Он работает нормально для ошибок типа 1001 и 1009, но не отвечает для ошибок 404.Я не могу решить это.Как я могу обработать эти типы ошибок?

Ответы [ 2 ]

1 голос
/ 21 февраля 2013
#pragma mark -
#pragma mark - UIWebView Delegate Methods
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    static BOOL isRequestWeb = YES;

    if (isRequestWeb) {
        NSHTTPURLResponse *response = nil;

        NSData *data = [NSURLConnection sendSynchronousRequest:request   returningResponse:&response error:nil];
        if (response.statusCode == 404) {
            // code for 404
            return NO;
        } else if (response.statusCode == 403) {
            // code for 403
            return NO;
        }

    [webView loadData:data MIMEType:@"text/html" textEncodingName:nil baseURL:[request URL]];

    isRequestWeb = NO;
    return NO;
    }

    return YES;
}
1 голос
/ 11 ноября 2010

Некоторые веб-серверы возвращают веб-страницу с ошибкой 404, которая загружается правильно, и, следовательно, веб-просмотр не переставал загружаться.

Возможно, именно поэтому вы видите такое поведение.

Нет простого способа получить доступ к URLConnection веб-просмотра, чтобы ответить на обратные вызовы кода состояния.

Если вам действительно нужно показать предупреждение при обнаружении 404 вместо того, чтобы позволить веб-серверу показывать свою собственную страницу 404, то вы можете создать NSURLConnection и NSURLRequest самостоятельно для URL, который вы хотите загрузить.

Затем вы можете загрузить HTML-код и поместить его в веб-просмотр вручную, если он будет успешным. Это даст вам контроль над делегатом URLConnection и позволит вам также ответить на код ответа 404.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...