Существует несколько условий, которые могут повлиять на отчеты об ошибках с HTTP-запросами. С точки зрения ASIHTTP, если объект запроса может быть успешно построен, отправлен и получен какой-то ответ, то все в порядке.
В моем случае, например, у моего интернет-провайдера есть прокси, который будет возвращать страницу с ошибкой со многими несуществующими URL, а иногда даже с неправильно сформированными URL. В таких случаях ASIHTTP не выйдет из строя. Я не знаю, если это тоже ваш случай, но это было для меня.
Если вы посмотрите на файл ASIHTTPRequest.m
и выполните поиск failWithError
, вы увидите все случаи, когда ASIHTTP вызовет механизм, который приводит к вызову didFailSelector
. Вы можете даже установить точку останова в методе failWithError
, чтобы увидеть, вызывается ли он.
EDIT:
В некотором смысле механизм ASIHTTPRequest является очень базовым и охватывает сбои на уровне network . Если вы получили ответ, то это сбой на уровне приложения, и вы должны с ним справиться.
Первым делом проверяется код статуса HTTP:
int statusCode = [request responseStatusCode];
NSString *statusMessage = [request responseStatusMessage];
Это позволит вам идентифицировать 404, 500 и т. Д.
Если это не работает и сервер не отправляет код ошибки, то единственный способ сделать это - анализ полученного вами ответа и, если он не содержит данных, которые вы ждали, произойдет сбой.