2013-02-16 7 views
0

У меня странный вопрос с AFHTTPClient, я посылаю запрос POST, какAFHTTPClient Ожидаемый код состояния в (200-299), получил 409

NSURL *u = [NSURL URLWithString:HTTP_SERVER]; 
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL: u]; 
[httpClient setParameterEncoding:AFJSONParameterEncoding]; 
[httpClient postPath:REGISTER 
      parameters:params 
      success:^(AFHTTPRequestOperation *operation, id JSON) { 
       int statusCode = [operation.response statusCode]; 
       if(statusCode == 201){ 
        [self performSegueWithIdentifier:@"register" sender:self]; 
       } 
      } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
       NSLog(@"[HTTPClient Error]: %@", error.localizedDescription); 
      }]; 

и сервер работает нормально (в некоторых случаях сервер должен ответить мне код 409, API получается таким образом), но я получаю ошибку в XCode как Expected status code in (200-299), got 409 Как решить эту проблему (мои руки связаны, я не могу изменить API и код ошибки)?

+1

[error userInfo] предоставит вам дополнительную информацию об ошибке. – Inoka

ответ

0

на основе this:

У вас есть два варианта:

  • добавить код состояния 409 в список допустимых кодов состояния, и получить его в блоке успеха (плохой)

  • сделки с кодом состояния 409 в блоке отказа (хороший)

Для последнего, если ваш [operation.response statusCode] является 409, вы бы использовать responseData из AFURLConnectionOperation (суперкласс AFHTTPRequestOperation, вам нужно будет импортировать его заголовок для этой работы).