IOS 使用Block二次封装AFNetworking 3.0详解
IOS使用Block二次封装AFNetworking3.0详解
现在我们网络请求大都用第三方工具—–AFNetworking;
其中,AFNetworking3.0是对NSURLSession进行的封装,简化了很多步骤,但是在现实开发中,我们可以将AFNetworking再次封装到一个类中,这样通过传去URL和Parameters就可以进行网络请求。
具体实现步骤:
前期准备:导入AFNetworking第三方框架
1、新建一个工具类,继承自NSObject;
2、在.h中宏定义两个block,用来回调请求结果;
//宏定义成功block回调成功后得到的信息 typedefvoid(^HttpSuccess)(iddata); //宏定义失败block回调失败信息 typedefvoid(^HttpFailure)(NSError*error);
3、使用类方法创建两个GET和POST请求函数;
//get请求 +(void)getWithUrlString:(NSString*)urlStringsuccess:(HttpSuccess)successfailure:(HttpFailure)failure; //post请求 +(void)postWithUrlString:(NSString*)urlStringparameters:(NSDictionary*)parameterssuccess:(HttpSuccess)successfailure:(HttpFailure)failure;
4、在.m中#import“AFNetworking/AFNetworking.h”,并实现.h中定义的两个函数;
//GET请求
+(void)getWithUrlString:(NSString*)urlStringsuccess:(HttpSuccess)successfailure:(HttpFailure)failure{
//创建请求管理者
AFHTTPSessionManager*manager=[AFHTTPSessionManagermanager];
manager.responseSerializer=[AFHTTPResponseSerializerserializer];
//内容类型
manager.responseSerializer.acceptableContentTypes=[NSSetsetWithObjects:@"application/json",@"text/json",@"text/javascript",@"text/html",nil];
//get请求
[managerGET:urlStringparameters:nilprogress:^(NSProgress*_NonnulldownloadProgress){
//数据请求的进度
}success:^(NSURLSessionDataTask*_Nonnulltask,id_NullableresponseObject){
success(responseObject);
}failure:^(NSURLSessionDataTask*_Nullabletask,NSError*_Nonnullerror){
failure(error);
}];
}
//POST请求
+(void)postWithUrlString:(NSString*)urlStringparameters:(NSDictionary*)parameterssuccess:(HttpSuccess)successfailure:(HttpFailure)failure{
//创建请求管理者
AFHTTPSessionManager*manager=[AFHTTPSessionManagermanager];
//
manager.responseSerializer=[AFHTTPResponseSerializerserializer];
//内容类型
manager.responseSerializer.acceptableContentTypes=[NSSetsetWithObjects:@"application/json",@"text/json",@"text/javascript",@"text/html",nil];
//post请求
[managerPOST:urlStringparameters:parametersprogress:^(NSProgress*_NonnulluploadProgress){
//数据请求的进度
}success:^(NSURLSessionDataTask*_Nonnulltask,id_NullableresponseObject){
success(responseObject);
}failure:^(NSURLSessionDataTask*_Nullabletask,NSError*_Nonnullerror){
failure(error);
}];
}
使用步骤:
1、导入自定义的工具类名;
2、调用自定义的方法;
[XMAFNRequestToolsgetWithUrlString:urlsuccess:^(iddata){
self.array=[NSJSONSerializationJSONObjectWithData:dataoptions:NSJSONReadingAllowFragments|NSJSONReadingMutableLeaveserror:nil];
NSLog(@"%@",self.array);
}failure:^(NSError*error){
NSLog(@"%@",error);
}];
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!