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 には、statusCode フィールドを持たないタイプ NSURLResponse の応答プロパティがあります。現在、次のように 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);
}];
しかし、これは私には醜く見えます。そして、応答の本文についてはまだ理解できません。
助言がありますか?