Как проверить, доступен ли веб-сервис - PullRequest
0 голосов
/ 08 апреля 2010

Я получаю данные из веб-службы с ...

NSString *myDataString = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&outError];

Как мне справиться с ситуацией, когда веб-сервис недоступен? Как и сейчас, приложение просто зависает.

Есть ли способ проверить, доступен ли сайт? olso, initWithContentsOfURL не имеет никакой функции тайм-аута.

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

Спасибо за любую помощь.

Джон

1 Ответ

3 голосов
/ 08 апреля 2010

Вы не должны использовать initWithContentsOfURL:, это блокирующий API, и приложение будет зависать во время выполнения, если только вы не создадите новый поток вручную, чтобы запустить его и правильно управлять им.

Вы должны использовать NSURLConnection для выполнения веб-запросов.

Используя NSURLConnection, вы получите неблокирующую, асинхронную функциональность, а также сможете обрабатывать такие вещи, как аутентификация, коды ответов, тайм-ауты иОтмена запроса.

Просмотрите документацию для NSURLConnection и NSURLRequest (а также NSMutableURLRequest).

Методы делегата NSURLConnection - это способ обработки кодов ответов., проверка подлинности и т. д.

Что касается исходного вопроса, вы можете проверить доступность веб-службы несколькими способами:

  • . Используйте пример Apple Reachability для проверки подключения к Интернету.и / или хост доступен из вашей текущей сети.
  • Используйте NSURLConnection для обработки кодов ответов с сервера.200 в порядке, 404 страница не найдена, требуется 401 авторизация, 500 внутренняя ошибка сервера и т. Д. И т. Д. И т. П.
    • Вы можете выполнять различные действия в зависимости от кода.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...