首页 > 代码库 > NSURLSession请求封装加HUD加载框
NSURLSession请求封装加HUD加载框
在.h里面的方法 定义单例类 typedef void(^SuccessBlock) (id block); typedef void(^FailureBlock) (id block); @interface NetRequest : NSObject <NSURLSessionDelegate> + (instancetype)shareInstance; - (void)requestWithURL:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)success failure:(FailureBlock)failure;
#import <SVProgressHUD.h> // 第三方加载条控件 static NetRequest *reuqest; @implementation NetRequest { SuccessBlock sucblock; FailureBlock faiBlock; NSMutableData *_allData; } + (instancetype)shareInstance { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ reuqest = [[NetRequest alloc] init]; }); return reuqest; } + (instancetype)allocWithZone:(struct _NSZone *)zone { if (!reuqest) { reuqest = [super allocWithZone:zone]; } return reuqest; } - (id)copy { return reuqest; } - (void)requestWithURL:(NSString *)url params:(NSDictionary *)params successBlock:(SuccessBlock)success failure:(FailureBlock)failure { NSURLRequest *myRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15]; NSURLSessionDownloadTask *downLoad =[[NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[NSOperationQueue mainQueue]] downloadTaskWithRequest:myRequest]; // 开始请求 [SVProgressHUD showWithStatus:@"正在加载..."]; //提示加载 [downLoad resume]; sucblock = success; faiBlock = failure; } // 请求完成 - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location { NSData *data = [NSData dataWithContentsOfURL:location]; id reuslt = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; sucblock(reuslt); [SVProgressHUD dismiss]; } // 网络请求进度 - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite { double progress = ( double )totalBytesWritten / totalBytesExpectedToWrite; NSLog ( @" 下载进度 ---%f" , progress); [SVProgressHUD showProgress:progress]; }
然后再viewcontroller里面就可以写
// 请求 NSString *string = [NSString stringWithFormat:@"http://……………………………………]; NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:string]]; // 配置 NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; // 任务 NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; NSLog(@"%@", result); }
一般我们都会封装一个AFN的网络请求 可以满足我们基本上的任何需要 但是偶尔我们也是要用一些
NSURLSession 如果特殊情况 封装好了以后可以拿过来用了
NSURLSession请求封装加HUD加载框
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。