ios 对于AFNetworking3.0之前版本的Get、Post请求的封装(直接调用即可)
来源:互联网 发布:美国基因检测 数据 编辑:程序博客网 时间:2024/06/10 00:25
对于AFNetworking的认识我想大家都不陌生,AFNetworking在3.0版本中删除了基于 NSURLConnection API的所有支持。如果项目以前使用过这些API,那么我们需要升级到基于 NSURLSession 的API的AFNetworking的版本。
以下的是针对AFNetworking3.0之前的封装,关于AFN3.0的改变我会在稍后的博客中进行介绍,毕竟多多少少还是有些人在使用AFNetwoking3.0之前的版本。
#GetData.h
首先在.h中创建三个AFHTTPRequestOperationManager对象
#import "AFHTTPRequestOperationManager.h"
@property(nonatomic,strong)AFHTTPRequestOperationManager *requestGetManager;@property(nonatomic,strong)AFHTTPRequestOperationManager *requestPOSTManager;@property(nonatomic,strong)AFHTTPRequestOperationManager *requestHeaderPOSTManager;
同样的全局调用还是使用单例类方便一些
+ (GetData *)sharedInstance;
Get请求的方法
/**! @brief GET 请求 @param parameters 传入的参数 @param success 调用接口成功后返回一个id类型值 @param failure 调用接口失败后返回一个错误描述 @return Dictiont */- (void)GETUrl:(NSString *)url parameters:(NSDictionary *)parameters success:(void (^)(id responseObject))success failure:(void (^)(NSError *error))failure;
Post方法
/**! @brief POST 请求 @param parameters 传入的参数 @param success 调用接口成功后返回一个id类型值 @param failure 调用接口失败后返回一个错误描述 */- (void)POSTUrl:(NSString *)url parameters:(NSDictionary *)parameters success:(void (^)(id responseObject))success failure:(void (^)(NSError *error))failure;上传头像的接口
/**! @brief POST 上存头像专用接口 @param parameters 传入的参数 @param data 上存头像的文件 @param success 调用接口成功后返回一个id类型值 @param failure 调用接口失败后返回一个错误描述 */- (void)HeaderPOSTUrl:(NSString *)url parameters:(NSDictionary *)parameters data:(NSData *)data keyname:(NSString *)namestr success:(void (^)(id responseObject))success failure:(void (^)(NSError *error))failure;
取消请求
<span style="font-size:18px;">- (void)cancelRequest;</span>
#GetData.m
对于单例类的基本实现
1、单例对象的实现
+ (Call_Interface *)sharedInstance{ static Call_Interface *_sharedInstance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _sharedInstance = [[Call_Interface alloc]init]; }); return _sharedInstance;}对于Get请求方法的基本实现
<span style="font-size:14px;">- (void)GETUrl:(NSString *)url parameters:(NSDictionary *)parameters success:(void (^)(id))success failure:(void (^)(NSError *))failure{ if (!_requestGetManager) { // 设置返回格式 _requestGetManager = [AFHTTPRequestOperationManager manager]; // 设置请求格式 _requestGetManager.responseSerializer = [AFJSONResponseSerializer serializer]; } _requestGetManager.requestSerializer.timeoutInterval = 30; NSLog(@"%@",url); [_requestGetManager GET:url parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { success(responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { if (operation.cancelled == YES) { return ; } failure(error); }];}</span>
对于POST请求的实现
<span style="font-size:14px;">- (void)POSTUrl:(NSString *)url parameters:(NSDictionary *)parameters success:(void (^)(id))success failure:(void (^)(NSError *))failure{ if (!_requestPOSTManager) { // 设置返回格式 _requestPOSTManager = [AFHTTPRequestOperationManager manager]; // 设置请求格式 _requestPOSTManager.responseSerializer = [AFJSONResponseSerializer serializer]; } _requestPOSTManager.requestSerializer.timeoutInterval = 30; NSLog(@"%@",url); [_requestPOSTManager POST:url parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { success(responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) {// if (operation.cancelled == YES) {// return ;// } failure(error); }]; // _mutaDiction = nil;}</span>对于头像上传的方法实现
<span style="font-size:14px;">- (void)HeaderPOSTUrl:(NSString *)url parameters:(NSMutableDictionary *)parameters data:(NSData *)data keyname:(NSString *)namestr success:(void (^)(id))success failure:(void (^)(NSError *))failure{ if (!_requestHeaderPOSTManager) { // 设置返回格式 _requestHeaderPOSTManager = [AFHTTPRequestOperationManager manager]; // 设置请求格式 _requestHeaderPOSTManager.responseSerializer = [AFJSONResponseSerializer serializer]; } _requestHeaderPOSTManager.requestSerializer.timeoutInterval = 30; NSLog(@"%@",url); [_requestHeaderPOSTManager POST:url parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { if (data!=nil) { int nowdate = [[NSString stringWithFormat:@"%ld",(long)[[NSDate date] timeIntervalSince1970]] intValue]; NSString * fileName = [NSString stringWithFormat:@"%d.jpg",nowdate]; [formData appendPartWithFileData:data name:namestr fileName:fileName mimeType:@"image/jpeg"]; } } success:^(AFHTTPRequestOperation *operation, id responseObject) { success(responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { if (operation.cancelled == YES) { return ; } failure(error); }]; }</span>
取消请求
- (void)cancelRequest{ if (_requestGetManager) { [_requestGetManager.operationQueue cancelAllOperations]; _requestGetManager = nil; } if (_requestHeaderPOSTManager) { [_requestHeaderPOSTManager.operationQueue cancelAllOperations]; _requestHeaderPOSTManager = nil; } if (_requestPOSTManager) { [_requestPOSTManager.operationQueue cancelAllOperations]; _requestPOSTManager = nil; }}最后别忘了释放内存
- (void)dealloc{ _requestGetManager = nil; _requestPOSTManager = nil; _requestHeaderPOSTManager = nil;}
0 0
- ios 对于AFNetworking3.0之前版本的Get、Post请求的封装(直接调用即可)
- ios 对于AFNetworking3.0的基本使用
- AFNetworking3.0版本之前和之后的一些变化
- AFNetworking3.0 POST请求
- Ajax请求GET/POST方法的封装
- Ajax请求GET/POST方法的封装
- OkHttp get post请求的封装
- AFNetWorking3.0的简单封装
- iOS开发对AFNetworking3.0的二次封装
- AFnetworking3.0的网络请求
- Ajax get请求和post请求的封装
- java使用httpclient封装post请求和get的请求
- 比较简单的Web请求(get/post)方法封装,调用网络接口时能用到
- 对于面试:POST和GET请求方式的终极回答
- ios 最全的GET | POST请求
- iOS 的GET和post请求
- ios 的post和get请求
- iOS开发:GET与POST接口网络请求以及对AFNetworking的二次封装
- Objective-C Runtime 运行时之一:类与对象
- Android关于Theme.AppCompat相关问题的深入分析
- shell脚本:Syntax error: Bad for loop variable错误解决方法
- 数组排序 —— 堆排序算法的应用(小范围排序、重复值判断)
- hdu 1348 Wall (凸包模板)
- ios 对于AFNetworking3.0之前版本的Get、Post请求的封装(直接调用即可)
- 判断是何种浏览器.html
- linux 常用命令
- VMware虚拟机跑Linux系统无/dev/fb0解决办法
- ios8之后使用CLLocationManager进行定位
- Android 6.0 申请权限
- 近期曝光的针对银行SWIFT系统攻击事件综合分析
- tmux常用命令与快捷键
- hdoj-2066