IOS開發之AFNetworking開源庫的使用,iosafnetworking

來源:互聯網
上載者:User

IOS開發之AFNetworking開源庫的使用,iosafnetworking
IOS開發之AFNetworking開源庫的使用1.簡介

  常見的處理網路請求方式

  (1)NSURLConnection/NSURLSession

  (2)ASIHttpRequest 早期項目中比較常見, 由於作者不更新了

  (3)AFNetworking 推薦使用, 項目中使用

  (4)MKNetworkKit 試試

2.配置和使用   2.1 配置 

    庫檔案拖入工程中, 包含標頭檔 

    #import "AFNetworking.h"

  2.2 使用     2.2.1.GET請求(html,json,xml)-(void)testGetRequest{ NSString *urlstring = @"http://www.baidu.com"; urlstring = @"http://m.weather.com.cn/data/101010100.html"; urlstring = @"http://mp.manzuo.com/china/beijing/home_2.xml"; //定義AFNetworking管理 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; //注意:預設資料是JSON,content-type也是JSON,responseObject是解析字典和數組,不是產生錯誤Code=-1016 //解決:設定解析器為HTTP形式,下載回來是NSData manager.responseSerializer = [AFCompoundResponseSerializer serializer]; [manager GET:urlstring parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {// responseObject重要參數,包含下載資料// NSLog(@"o = %@",responseObject); NSString *str = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding]; NSLog(@"str = %@",str); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"error = %@",error); }];}testGetRequest     2.2.2.POST請求-(void)testPostRequest{ //POST介面: //參數1:@"user" : @"quiet" //參數2:@"password" : @"123" NSString *urlString = @"http://quiet.local/testdir/login.php"; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSerializer = [AFCompoundResponseSerializer serializer]; //參數1:傳入地址 //參數2:傳入URL請求的參數,格式傳入字典 [manager POST:urlString parameters:@{@"user": @"quiet",@"password" : @"123"} success:^(AFHTTPRequestOperation *operation, id responseObject) { NSString *str = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding]; NSLog(@"str = %@",str); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"error = %@",error); }];}testPostRequest     2.2.3.上傳檔案(上傳圖片)-(void)testUploadFile{ //POST上傳的介面 NSString *urlString = @"http://quiet.local/uploadtest/pk.php"; //參數名:image : 參數值是圖片 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSerializer = [AFCompoundResponseSerializer serializer]; [manager POST:urlString parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { NSString *path = [[NSBundle mainBundle]pathForResource:@"daji.jpg" ofType:nil]; [formData appendPartWithFileURL:[NSURL URLWithString:path] name:@"image" fileName:@"666.jpg" mimeType:@"image/jpeg" error:nil]; } success:^(AFHTTPRequestOperation *operation, id responseObject) { NSString *str = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding]; NSLog(@"str = %@",str); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"error = %@",error); }]; [manager POST:urlString parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { //實現:上傳的資料附加到請求體中 //fileName:上傳後的檔案名稱 //mimeType:需要上網搜尋mime,把相應的格式複製過來 NSString *path = [[NSBundle mainBundle]pathForResource:@"daji.jpg" ofType:nil]; [formData appendPartWithFileURL:[NSURL fileURLWithPath:path] name:@"image" fileName:@"666.jpg" mimeType:@"image/jpeg" error:nil]; } success:^(AFHTTPRequestOperation *operation, id responseObject) { NSString *str = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding]; NSLog(@"str = %@",str); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"error = %@",error); }]; }testUploadFile      2.2.4.下載檔案-(void)testDownloadFile{ NSString *urlString = @"http://imgcache.qq.com/club/item/avatar/zip/7/i87/all.zip"; //建立會話管理對象(通過預設配置) AFURLSessionManager *manager = [[AFURLSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]] progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) { //返迴文件儲存的位置 NSString *path = [NSString stringWithFormat:@"%@/Documents/all.zip",NSHomeDirectory()]; NSLog(@"%@",NSHomeDirectory()); return [NSURL fileURLWithPath:path]; } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) { NSLog(@"下載完成"); }]; //啟動任務 [task resume]; }testDownloadFile     2.2.5.監控網路狀態-(void)testMonitorNetworkStatus{ AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc]initWithBaseURL:[NSURL URLWithString:@"www.baidu.com"]]; [manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { NSDictionary *dict = @{ @(AFNetworkReachabilityStatusUnknown): @"未知", @(AFNetworkReachabilityStatusNotReachable): @"不可達", @(AFNetworkReachabilityStatusReachableViaWWAN): @"GPRS", @(AFNetworkReachabilityStatusReachableViaWiFi): @"Wifi", }; NSLog(@"狀態為 %@",dict[@(status)]); }]; //開啟狀態監視 [manager.reachabilityManager startMonitoring];}testMonitorNetworkStatus     2.2.6.圖片非同步功能(替代SDWebImage)

          匯入標頭檔

          #import "UIKit+AFNetworking.h"

          - (void)setImageWithURL:(NSURL *)url;

     2.2.7.有一些特殊的要求標頭

         BAIDU_WISE_UID=wapp_1428385381699_466;

         AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  

         [manager.requestSerializer setValue:@"wapp_1428385381699_466" forHTTPHeaderField:@"BAIDU_WISE_UID"]; 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.