Okogeki'sブログ

デキるエンジニアを目指すOkogekiのブログ

AFNetworking:failureBlockでbodyの中身を取得する方法

いわずとしれた便利な通信ライブラリAFNetworkinggithub.com

errorBlock内ではbodyの中身取れませんって言われた

この前、エンジニア仲間から
「failureBlock内ではbodyを取って来れないって記事見たんでできない」
って言ってたのを聞き、
「んー、そんな事は考えにくいなぁ。。。」って思い、調べたので取得する方法を伝授。

やりかた

下記方法で取ってこれます。

-(void)requestAPI:(NSString*)API parameter:(NSDictionary*)parameters{
    
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    manager.requestSerializer.timeoutInterval = 10.0;
    
    [manager POST:API
       parameters:parameters
          success:^(NSURLSessionDataTask *task, id responseObject){
              
              
          }
          failure:^(NSURLSessionDataTask *task, NSError *error){
              
              NSData* data = error.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey];
              NSString* body = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
              NSLog(@"%@",body);
          }];
    

}

できないって記事を鵜呑みにせずに自分で検討する力も大事。
その力が身に付きつつあるなと実感。
今後も精進します。