Проверьте, возвращает ли NSURL 404

Мне нужно проверить, доступен ли URL (представленный NSURL) или возвращает 404. Каков наилучший способ достичь этого?

Я бы предпочел, чтобы проверить это без делегата, если это возможно. Мне нужно заблокировать выполнение программы, пока не узнаю, доступен ли URL или нет.

Мне было нужно решение, которое не использовало делегат, поэтому я взял fragmentы кода, показанные в других ответах, и создал простой метод, который хорошо работает в моем случае (и может быть, и то, что вы ищете):

  -(BOOL) webFileExists { NSString *url = @"http://www.apple.com/somefile.html"; NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0]; NSHTTPURLResponse* response = nil; NSError* error = nil; [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; NSLog(@"statusCode = %d", [response statusCode]); if ([response statusCode] == 404) return NO; else return YES; } 

Я использовал ответ из woodmantech выше, но изменил его на основе того, что я видел по другим аналогичным вопросам здесь, чтобы он не загружал весь файл, чтобы узнать, существует ли он.

Я изменил NSURLRequest на NSMutableURLRequest и добавил:

 [request setHTTPMethod:@"HEAD"]; 

Кажется, это работает нормально. Я работаю над своим первым приложением, поэтому никакого реального опыта пока нет. Всем спасибо.

  NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0]; [request setHTTPMethod:@"HEAD"]; NSHTTPURLResponse* response = nil; NSError* error = nil; [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; NSLog(@"statusCode = %d", [response statusCode]); 

Вы можете добиться синхронного соединения, позвонив:

 NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]]; NSHTTPURLResponse* response = nil; NSError* error = nil; [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

Ваш stream будет блокироваться до тех пор, пока запрос не будет выполнен.

Interesting Posts

проверьте, доступно ли подключение к Интернету с помощью C #

Windows 10 ver 1607: Проводник длинных путей не работает?

Поиск DNS не работает, но nslookup работает

Возможно ли одноуровневое многоязычное развертывание Windows Forms (ILMerge и спутниковые сборки / локализация)?

Как работает EL пустой оператор в JSF?

Существуют ли библиотеки с открытым кодом C с общими структурами данных?

Ошибка установки углового с использованием npm из-за необходимости использовать строку

java “void” и “non void” конструктор

codeigniter Ошибка CSRF: «Запрошенное действие не разрешено».

Использование индекса, используя временный, с помощью filesort – как это исправить?

Каковы некоторые альтернативы ReSharper?

Сохраните одну веб-страницу (с фоновым изображением) с помощью Wget

Как я могу сделать снимок с помощью своей веб-камеры в Windows 7?

Как отключить загрузку изображений в firefox и загрузить все изображения для данной страницы?

Получить атрибут annotations Java

Давайте будем гением компьютера.