NSURLSession的POST请求及封装
2016-02-02 16:41
281 查看
这是在.h文件中的声明,需要声明两个block用来回调
#import <Foundation/Foundation.h> typedef void(^SuccessBlock)(id newData, NSURLResponse * response); typedef void(^FailureBlock)(NSError * error); @interface NetworkForSession : NSObject +(void)sessionPostRequsetWithUrl:(NSString *)url Parameters:(NSDictionary *)parameters ResponseBlockWithSuccess:(SuccessBlock)success AndFailureBlock:(FailureBlock)failure; @end
上.m文件中代码
#import "NetworkForSession.h" @implementation NetworkForSession +(void)sessionPostRequsetWithUrl:(NSString *)url Parameters:(NSDictionary *)parameters ResponseBlockWithSuccess:(SuccessBlock)success AndFailureBlock:(FailureBlock)failure{ //异步post NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]]; //设置请求方式 [request setHTTPMethod:@"POST"]; //设置超时 [request setTimeoutInterval:30.0f]; //(3)设置请求头 //[request setAllHTTPHeaderFields:nil]; //设置请求体 if (parameters != nil) { NSArray * keyArray = [parameters allKeys]; NSMutableArray * newParameterArray = [NSMutableArray array]; for (int i = 0; i < keyArray.count; i++) { NSString * str = [[keyArray[i] stringByAppendingString:@"="] stringByAppendingString:[parameters[keyArray[i]] isKindOfClass:[NSString class]] ? parameters[keyArray[i]] : [NSString stringWithFormat:@"%@", parameters[keyArray[i]]]]; [newParameterArray addObject:str]; } NSMutableString * httpBody = [NSMutableString string]; for (int i = 0; i < newParameterArray.count; i++) { [httpBody appendString:[newParameterArray[i] stringByAppendingString:@"&"]]; } [httpBody deleteCharactersInRange:NSMakeRange(httpBody.length - 1, 1)]; [request setHTTPBody:[httpBody dataUsingEncoding:NSUTF8StringEncoding]]; }else{ [request setHTTPBody:nil]; } //构造session NSURLSession * session = [NSURLSession sharedSession]; NSURLSessionDataTask * task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
id newData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; if (error) { failure(error); }else{ success(newData, response); } }]; [task resume]; } @end
相关文章推荐
- boost 线程池的使用
- docker学习笔记(二)——创建私有库
- spark streaming 异常No output streams registered, so nothing to execute
- BCM_SDK命令
- Session 类
- 4.4 小结
- SDL入门(二)代码模板
- TMCache + Mantle 详解
- 学无止境,学习AJAX(二)
- (2016.2.2)1001.A+B Format (20)解题思路
- Win8系统怎么修改虚拟内存大小?Win8系统修改虚拟内存大小的方法
- ObjectAnimator常用设置view效果
- 4.3.3 空值与GROUP BY和ORDER BY
- 【SDOI2009】【bzoj1878】HH的项链(离线+树状数组)
- Quartz 2D原文档及中文翻译收藏
- Android gallery画廊
- Java 代理模式和装饰者模式的区别
- iOS在UILabel中间画删除线
- Xposed Module开发教程1
- IOS 四种保存数据的方式