前言:
计划把公司的网络请求与业务解耦,所以想着学习一下网络请求,最近学习了NSURLSession,今天来学习一下基于NSURLSession封装的优秀开源框架AFNetWorking 3.x,之前13年做iOS开发时用的ASIHttpRequest开源框架。
AFNetWorking
AFNetWorking一款轻量级网络请求开源框架,基于iOS和mac os 网络进行扩展的高性能框架,大大降低了iOS开发工程师处理网络请求的难度,让iOS开发变成一件愉快的事情。
GitHub地址:https://github.com/AFNetworking/AFNetworking
1.)AFHTTPSessionManager请求管理者
-(AFHTTPSessionManager *)sharedManager { AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; //最大请求并发任务数 manager.operationQueue.maxConcurrentOperationCount = 5;
// 请求格式 // AFHTTPRequestSerializer 二进制格式 // AFJSONRequestSerializer JSON // AFPropertyListRequestSerializer PList(是一种特殊的XML,解析起来相对容易) manager.requestSerializer = [AFHTTPRequestSerializer serializer]; // 上传普通格式 // 超时时间 manager.requestSerializer.timeoutInterval = 30.0f; // 设置请求头 [manager.requestSerializer setValue:@"gzip" forHTTPHeaderField:@"Content-Encoding"]; // 设置接收的Content-Type manager.responseSerializer.acceptableContentTypes = [[NSSet alloc] initWithObjects:@"application/xml", @"text/xml",@"text/html", @"application/json",@"text/plain",nil]; // 返回格式 // AFHTTPResponseSerializer 二进制格式 // AFJSONResponseSerializer JSON // AFXMLParserResponseSerializer XML,只能返回XMLParser,还需要自己通过代理方法解析 // AFXMLDocumentResponseSerializer (Mac OS X) // AFPropertyListResponseSerializer PList // AFImageResponseSerializer Image // AFCompoundResponseSerializer 组合 manager.responseSerializer = [AFJSONResponseSerializer serializer];//返回格式 JSON //设置返回C的ontent-type manager.responseSerializer.acceptableContentTypes=[[NSSet alloc] initWithObjects:@"application/xml", @"text/xml",@"text/html", @"application/json",@"text/plain",nil]; return manager;