AFNetWorking

AFNetworking是一個(gè)輕量級(jí)的iOS網(wǎng)絡(luò)通信類(lèi)庫(kù)
它建立在NSURLConnection和NSOperation等類(lèi)庫(kù)的基礎(chǔ)上,讓很多網(wǎng)絡(luò)通信功能的實(shí)現(xiàn)變得十分簡(jiǎn)單。NSURLConnection是處理網(wǎng)絡(luò)連接的。
NSOperation是管理NSURLConnection的,可以監(jiān)視一個(gè)請(qǐng)求的生命周期。AFURLConnectionOperation:NSOperation的子類(lèi),實(shí)現(xiàn)了NSURLConnection 的代理方法。
AFHTTPRequestOperation:AFURLConnectionOperation的子類(lèi),針對(duì)request使用的協(xié)議為HTTP和HTTPS。
AFHTTPRequestOperationManager:封裝了一組調(diào)用請(qǐng)求的方法。

它支持HTTP請(qǐng)求和基于REST的網(wǎng)絡(luò)服務(wù)(包括GET、POST、 PUT、DELETE等)。
支持ARC。

AFNetworking3.0目前使用NSURLSession作為網(wǎng)絡(luò)類(lèi)
官方鏈接
對(duì)于iOS7.0以上的系統(tǒng),AFNetworking提供了更高級(jí)的方法:
1.AFURLSessionManager
:創(chuàng)建、管理基于NSURLSessionConfiguration
對(duì)象的NSURLSession
對(duì)象的類(lèi),也可以管理 session 的數(shù)據(jù)、下載/上傳任務(wù),實(shí)現(xiàn) session 和其相關(guān)聯(lián)的任務(wù)的 delegate 方法。2.AFHTTPSessionManager
:封裝了一組調(diào)用請(qǐng)求的方法。

AFNetworking可以檢測(cè)當(dāng)前網(wǎng)絡(luò)的可達(dá)性。
AFNetworkReachabilityManager:這個(gè)類(lèi)監(jiān)控當(dāng)前網(wǎng)絡(luò)的可達(dá)性,提供回調(diào) block 和 notificaiton,在可達(dá)性變化時(shí)調(diào)用。

AFNetworking提供了請(qǐng)求的安全策略。
AFSecurityPolicy:評(píng)估服務(wù)器對(duì)安全連接針對(duì)指定的固定證書(shū)或公共密鑰的信任。將你的服務(wù)器證書(shū)添加到 app bundle,以幫助防止 中間人攻擊。

下面是一些實(shí)例:(先導(dǎo)入AFNetworking頭文件)

pragma mark--------------GET 請(qǐng)求-------------(void)GET{ //創(chuàng)建manager請(qǐng)求對(duì)象 AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; [mgr GET:@"http://api.douban.com/v2/event/list?type=all&district=all&loc=108288&photo_cate=image&photo_count=1&start=3&day_type=future&apikey=062bcf31694a52d212836d943bdef876" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { //responseObject里面,是請(qǐng)求成功以后里邊返回的字典或者數(shù)據(jù),對(duì)其進(jìn)行解析 NSLog(@"GET請(qǐng)求成功:%@",responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"GET請(qǐng)求失敗:%@",error); }];}- (void)POST{ //創(chuàng)建manager請(qǐng)求對(duì)象 AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; //設(shè)置請(qǐng)求的參數(shù)為json格式 mgr.requestSerializer = [AFJSONRequestSerializer serializer]; //設(shè)置響應(yīng)序列化為二進(jìn)制 mgr.responseSerializer = [AFHTTPResponseSerializer serializer]; //設(shè)置body NSDictionary *dic = @{@"date":@"20131129",@"startRecord":@"1",@"len":@"5",@"udid":@"1234567890",@"terminalType":@"Iphone",@"cid":@"213"}; [mgr POST:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx" parameters:dic success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"POST請(qǐng)求成功:%@",responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"POST請(qǐng)求失敗:%@",error); }];}

注意網(wǎng)絡(luò)請(qǐng)求時(shí)要在info.plist文件里加下面的字段


添加的字段.png

pragma mark-----文件下載------ (void)downLoad{//創(chuàng)建一個(gè)用來(lái)分別配置每一個(gè)session對(duì)象的類(lèi),defaultSessionConfiguration:是session的默認(rèn)配置,使用硬盤(pán)來(lái)存儲(chǔ)緩存數(shù)據(jù) NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; //創(chuàng)建manager管理對(duì)象 AFURLSessionManager *mgr = [[AFURLSessionManager alloc]initWithSessionConfiguration:configuration]; //下載內(nèi)容的接口 NSURL *url = [NSURL URLWithString:@"http://tj-ctfs.ftn.qq.com/ftn_handler/0c5aea356cbf0c529934369eeabc80d78816ad7059a33ac2e20eaeb88273827d03be89e38025aa8dbdcc2227520993804054d97b81307ceea3ad6ed9982ec64c/AFN+SDW.key"]; //創(chuàng)建請(qǐng)求 NSURLRequest *request = [NSURLRequest requestWithURL:url]; //創(chuàng)建下載任務(wù) NSURLSessionDownloadTask *task = [mgr downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) { //該block需要返回值 NSURL *path = [[NSFileManager defaultManager]URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil]; //返回和服務(wù)器文件名一樣,當(dāng)我們希望保存 的文件和服務(wù)器的文件名一致時(shí),可以使用這個(gè)名字:suggestedFilename return [path URLByAppendingPathComponent:[response suggestedFilename]]; } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) { //打印下載后的存儲(chǔ)路徑 NSLog(@"文件下載路徑%@",filePath); }]; [task resume];}#pragma mark-------文件上傳-------- (void)upload{ //創(chuàng)建一個(gè)用來(lái)分別配置每一個(gè)session對(duì)象的類(lèi),defaultSessionConfiguration:是session的默認(rèn)配置,使用硬盤(pán)來(lái)存儲(chǔ)緩存數(shù)據(jù) NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; //創(chuàng)建manager管理對(duì)象 AFURLSessionManager *mgr = [[AFURLSessionManager alloc]initWithSessionConfiguration:configuration]; //上傳內(nèi)容的接口 NSURL *url = [NSURL URLWithString:@"http://tj-ctfs.ftn.qq.com/ftn_handler/0c5aea356cbf0c529934369eeabc80d78816ad7059a33ac2e20eaeb88273827d03be89e38025aa8dbdcc2227520993804054d97b81307ceea3ad6ed9982ec64c/AFN+SDW.key"]; //創(chuàng)建請(qǐng)求 NSURLRequest *request = [NSURLRequest requestWithURL:url]; //創(chuàng)建將要上傳文件的路徑 NSURL *path = [NSURL fileURLWithPath:@""]; //創(chuàng)建上傳任務(wù) NSURLSessionUploadTask *task = [mgr uploadTaskWithRequest:request fromFile:path progress:nil completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { if (error) { NSLog(@"上傳失敗-----%@",error); }else{ NSLog(@"上傳成功-----%@------%@",response,responseObject); } }]; [task resume];}#pragma mark-----網(wǎng)絡(luò)判斷---------------- (void)reachbility{//創(chuàng)建網(wǎng)絡(luò)監(jiān)聽(tīng)管理者對(duì)象 AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager]; [mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { switch (status) { case AFNetworkReachabilityStatusUnknown: NSLog(@"未識(shí)別的網(wǎng)絡(luò)"); break; case AFNetworkReachabilityStatusReachableViaWWAN: NSLog(@"2G,3G,4G網(wǎng)絡(luò)"); break; case AFNetworkReachabilityStatusReachableViaWiFi: NSLog(@"wifi網(wǎng)絡(luò)"); break; case AFNetworkReachabilityStatusNotReachable: NSLog(@"未連接的網(wǎng)絡(luò)"); break; default: break; } }]; //開(kāi)啟監(jiān)聽(tīng) [mgr startMonitoring];}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容