Как найти причину ошибки 404, когда я использую приложение, основанное на веб-просмотре, и сервер не работает в iphone SDK - PullRequest
6 голосов
/ 21 декабря 2010

Я реализую приложение, основанное на веб-просмотре, в котором мне нужно выяснить способ возникновения ошибки 404.

Любая помощь будет высоко оценена.

Спасибо всем, Мониш.

Ответы [ 4 ]

1 голос
/ 08 апреля 2015

webViewDidFinishLoad() метод записывает следующий код и проверяет код состояния ...

- (void)webViewDidFinishLoad:(UIWebView *)webview {

    NSCachedURLResponse *urlResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:webview.request];
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*) urlResponse.response;
    NSInteger statusCode = httpResponse.statusCode;
}
1 голос
/ 05 декабря 2014

В методе webViewDidFinishLoad вы также можете проверить это следующим образом:

NSCachedURLResponse *resp = [[NSURLCache sharedURLCache] cachedResponseForRequest:webView.request];
NSLog(@"status code: %ld", (long)[(NSHTTPURLResponse*)resp.response statusCode]);
0 голосов
/ 22 декабря 2010

Попробуйте, я думаю, что если URL неверен, то возвращаемый html равен нулю.вы можете обрабатывать его там только

NSString *htmlCode = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:loadUrl]];    
if (htmlCode==nil)
    {
        // you can handle here with an alert or any message in webview to load.
    }
    else
    {
        [myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:loadUrl]]];
    }

    [htmlCode release];

Вы можете использовать htmlCode другим способом, таким как

- (void)webViewDidFinishLoad:(UIWebView *)webView

, если хотите обработать его после запроса.

0 голосов
/ 21 декабря 2010

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

     - (void)webViewDidFinishLoad:(UIWebView *)webView
{
    int status = [[[webView request] valueForHTTPHeaderField:@"Status"] intValue];
    if (status == 404) {

    }
}

Если это не поможет вам.Проверьте это.Создайте NSURLRequest с URL-адресом, который вы хотите загрузить.Затем установите соединение с помощью NSURLConnection.

NSURLConnection имеет метод делегата

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

, который даст ответ от сервера.Обратите внимание, что если вы устанавливаете соединение через HTTP, ответ на самом деле будет иметь класс NSHTTPURLResponse.NSHTTPURLResponse можно использовать для получения статуса, используя следующий метод экземпляра

- (NSInteger)statusCode

Затем проверьте, если статус = 404 или нет, и если да, то покажите свое представление предупреждения.Таким образом, вы сможете показывать html-страницу и окно с предупреждением.

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