Cocoa Touch: как обнаружить отсутствующий файл на сервере загрузки - PullRequest
1 голос
/ 19 августа 2010

Мое приложение iOS загружает файлы документов с сервера, используя класс NSURLConnection.Я использую его асинхронно.

Может случиться, что на сервере отсутствует документ (ошибка конфигурации).Я ожидал, что NSURLConnection вызовет мой метод ошибки делегата:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error

Но это не так.Вместо этого он успешно загружает веб-страницу с ошибкой HTML 404, возвращаемую сервером.Единственный обходной путь, который я нашел, состоял в том, чтобы проверить свойство NSURLResponse MIMEtype и потерпеть неудачу, когда оно text/html.Он работает нормально, но мне это не нравится, потому что он не позволяет мне поддерживать HTML-документы на более позднем этапе.

Как я могу проверить, действительно ли запрошенный URL-адрес присутствует на сервере?

Спасибо

Ответы [ 2 ]

1 голос
/ 19 августа 2010

В методе делегата - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response вы можете запросить ответ для его кода ошибки.

if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
        NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
        if (httpResponse.statusCode == 404) {
                ...
             //etc
1 голос
/ 19 августа 2010

Когда вы получите ответ (в -connection:didReceiveResponse:), вы получите запрос на ответ. Поскольку вы используете HTTP, это будет своего рода NSHTTPURLResponse, хотя вы можете проверить это. В любом случае, он скажет вам -statusCode, который может быть 200, 404 или что-то еще.

...