2013-05-17 4 views
1

Я используюAFNetworking - JSONRequestOperationWithRequest успех на код 400 Статус

NSMutableURLRequest *request = [self requestWithMethod:@"GET" path:@"paths/" parameters:params]; 

AFJSONRequestOperation *jsonRequest = [AFJSONRequestOperation 
JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, 
NSHTTPURLResponse *response, id JSON) { 
     // something to do here in case of success 
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON 
{ 
     // and something there in case of failure 
} 

Все работает отлично, за исключением одного случая, когда я получаю ответ с 400 статус кода и JSON (действительно, я 've checked), содержащий некоторую информацию об этой ошибке, как я вижу, используя браузер. Но JSONRequestOperationWithRequest называет блок успеха и JSON, а ответ - ноль. Что может быть причиной этого?

+0

Если вы получаете код состояния 400, тогда необходимо вызвать блок отказа. (Я проверил исходный код AFNetworking) – danypata

+0

Фактически в других случаях вызывается блок отказа, только в этом случае происходит успешный блок – laucel

ответ

5

Неисправность вызывается, если после завершения операции requestOperation имеет соответствующую ошибку. Причины ошибки включают ответ, имеющий неправильный Content-Type, не имеющий допустимого кода состояния (по умолчанию диапазон 2XX, но это можно изменить с помощью AFHTTPRequestOperation +addAcceptableStatusCodes:) или с ошибкой обработки загруженных данных. Это гарантированное поведение.

Вы можете получить объекты JSON в ответе 400 как часть блока failure, и вы можете получить nil JSON в success. Они согласуются с тем, как работает AFNetworking.

+0

Спасибо, Мэтт, я не знал, что – laucel

Смежные вопросы