当切换到 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);
}];
但这在我看来很难看。而且仍然无法弄清楚响应的主体。
有什么建议么?