При переключении на AFNetworking 2.0 AFHTTPClient был заменен на AFHTTPRequestOperationManager/AFHTTPSessionManager (как указано в руководстве по миграции). Самая первая проблема, с которой я столкнулся при использовании AFHTTPSessionManager, заключается в том, как получить тело ответа в блоке отказов?
Вот пример:
[self.sessionManager POST:[endpoint absoluteString] parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
// How to get the status code?
} failure:^(NSURLSessionDataTask *task, NSError *error) {
// How to get the status code? response?
}];
В блоке успеха я хотел бы получить код состояния ответа. В блоке отказа я хотел бы получить как код состояния ответа, так и контент (который JSON в этом случае описывает ошибку на стороне сервера).
У NSURLSessionDataTask есть свойство ответа типа NSURLResponse, которое не имеет поля statusCode. В настоящее время я могу получить statusCode следующим образом:
[self.sessionManager POST:[endpoint absoluteString] parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
// How to get the status code?
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSHTTPURLResponse *response = (NSHTTPURLResponse *)task.response;
DDLogError(@"Response statusCode: %i", response.statusCode);
}];
Но это выглядит уродливо для меня. И все еще не может понять тело ответа.
Любые предложения?