• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 298  文章 - 377  trackbacks - 0
            <2009年6月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011

            常用鏈接

            留言簿(34)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊

            收藏夾

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            //  
            //  MJViewController.m  
            //  03.AFN演練  
            //  
            //  Created by apple on 14-4-30.  
            //  Copyright (c) 2014年 itcast. All rights reserved.  
            //  
              
            #import "MJViewController.h"  
            #import "AFNetworking.h"  
              
            @interface MJViewController ()  
              
            @end  
              
            @implementation MJViewController  
            /*
             要使用常規的AFN網絡訪問 
              
             1. AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
              
                所有的網絡請求,均有manager發起 
              
             2. 需要注意的是,默認提交請求的數據是二進制的,返回格式是JSON 
              
                1> 如果提交數據是JSON的,需要將請求格式設置為AFJSONRequestSerializer 
                2> 如果返回格式不是JSON的, 
              
             3. 請求格式 
              
                 AFHTTPRequestSerializer            二進制格式 
                 AFJSONRequestSerializer            JSON 
                 AFPropertyListRequestSerializer    PList(是一種特殊的XML,解析起來相對容易) 
              
             4. 返回格式 
              
                 AFHTTPResponseSerializer           二進制格式 
                 AFJSONResponseSerializer           JSON 
                 AFXMLParserResponseSerializer      XML,只能返回XMLParser,還需要自己通過代理方法解析 
                 AFXMLDocumentResponseSerializer (Mac OS X) 
                 AFPropertyListResponseSerializer   PList 
                 AFImageResponseSerializer          Image 
                 AFCompoundResponseSerializer       組合 
             
            */  
              
            - (void)viewDidLoad  
            {  
                [super viewDidLoad];  
                  
                [self reach];  
            }  
              
            #pragma mark - 演練  
            #pragma mark - 檢測網絡連接  
            - (void)reach  
            {  
                /*
                 AFNetworkReachabilityStatusUnknown          = -1,  // 未知 
                 AFNetworkReachabilityStatusNotReachable     = 0,   // 無連接 
                 AFNetworkReachabilityStatusReachableViaWWAN = 1,   // 3G 花錢 
                 AFNetworkReachabilityStatusReachableViaWiFi = 2,   // 局域網絡,不花錢 
                 
            */  
                // 如果要檢測網絡狀態的變化,必須用檢測管理器的單例的startMonitoring  
                [[AFNetworkReachabilityManager sharedManager] startMonitoring];  
                  
                // 檢測網絡連接的單例,網絡變化時的回調方法  
                [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {  
                    NSLog(@"%d", status);  
                }];  
            }  
              
            #pragma mark - Session 下載  
            - (void)sessionDownload  
            {  
                NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];  
                AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:config];  
                  
                NSString *urlString = @"http://localhost/itcast/videos/01.C語言-語法預覽.mp4";  
                urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  
                  
                NSURL *url = [NSURL URLWithString:urlString];  
                NSURLRequest *request = [NSURLRequest requestWithURL:url];  
                  
                NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {  
                    // 指定下載文件保存的路徑  
            //        NSLog(@"%@ %@", targetPath, response.suggestedFilename);  
                    
            // 將下載文件保存在緩存路徑中  
                    NSString *cacheDir = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];  
                    NSString *path = [cacheDir stringByAppendingPathComponent:response.suggestedFilename];  
                      
                    // URLWithString返回的是網絡的URL,如果使用本地URL,需要注意  
                    NSURL *fileURL1 = [NSURL URLWithString:path];  
                    NSURL *fileURL = [NSURL fileURLWithPath:path];  
                      
                    NSLog(@"== %@ |||| %@", fileURL1, fileURL);  
                      
                    return fileURL;  
                } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {  
                    NSLog(@"%@ %@", filePath, error);  
                }];  
                  
                [task resume];  
            }  
              
            #pragma mark - POST JSON  
            - (void)postJSON  
            {  
                AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
                  
                NSDictionary *dict = @{@"name": @"zhangsan"};  
                NSDictionary *dict1 = @{@"name": @"wangwu"};  
                NSArray *array = @[dict, dict1];  
                // 設置請求格式  
                manager.requestSerializer = [AFJSONRequestSerializer serializer];  
                // 設置返回格式  
                manager.responseSerializer = [AFHTTPResponseSerializer serializer];  
                  
                [manager POST:@"http://localhost/postjson.php" parameters:array success:^(AFHTTPRequestOperation *operation, id responseObject) {  
                    NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];  
                      
                    NSLog(@"%@", result);  
                } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
                      
                }];  
                  
            }  
              
            #pragma mark - 隨機文件名上傳  
            - (void)postUpload1  
            {  
                // 本地上傳給服務器時,沒有確定的URL,不好用MD5的方式處理  
                AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
                manager.responseSerializer = [AFHTTPResponseSerializer serializer];  
                  
                [manager POST:@"http://localhost/demo/upload.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {  
                      
                    NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"頭像1.png" withExtension:nil];  
                      
                    // 要上傳保存在服務器中的名稱  
                    
            // 使用時間來作為文件名 2014-04-30 14:20:57.png  
                    
            // 讓不同的用戶信息,保存在不同目錄中  
                    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];  
                    // 設置日期格式  
                    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";  
                    NSString *fileName = [formatter stringFromDate:[NSDate date]];  
                      
                    [formData appendPartWithFileURL:fileURL name:@"uploadFile" fileName:fileName mimeType:@"image/png" error:NULL];  
                      
                } success:^(AFHTTPRequestOperation *operation, id responseObject) {  
                    NSLog(@"OK");  
                } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
                    NSLog(@"error");  
                }];  
            }  
              
            #pragma mark - POST上傳  
            - (void)postUpload  
            {  
                AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
                // AFHTTPResponseSerializer就是正常的HTTP請求響應結果:NSData  
                
            // 當請求的返回數據不是JSON,XML,PList,UIImage之外,使用AFHTTPResponseSerializer  
                
            // 例如返回一個html,text  
                
            //  
                
            // 實際上就是AFN沒有對響應數據做任何處理的情況  
                manager.responseSerializer = [AFHTTPResponseSerializer serializer];  
                  
                // formData是遵守了AFMultipartFormData的對象  
                [manager POST:@"http://localhost/demo/upload.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {  
                      
                    // 將本地的文件上傳至服務器  
                    NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"頭像1.png" withExtension:nil];  
                      
                    [formData appendPartWithFileURL:fileURL name:@"uploadFile" error:NULL];  
                } success:^(AFHTTPRequestOperation *operation, id responseObject) {  
                    NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];  
                      
                    NSLog(@"完成 %@", result);  
                } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
                    NSLog(@"錯誤 %@", error.localizedDescription);  
                }];  
            }  
              
            #pragma mark - JSON  
            - (void)XMLData  
            {  
                AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
                  
                // 返回的數據格式是XML  
                manager.responseSerializer = [AFXMLParserResponseSerializer serializer];  
                  
                NSDictionary *dict = @{@"format": @"xml"};  
                  
                // 網絡訪問是異步的,回調是主線程的,因此程序員不用管在主線程更新UI的事情  
                [manager GET:@"http://localhost/videos.php" parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {  
                      
                    // 如果結果是XML,同樣需要使用6個代理方法解析,或者使用第三方庫  
                    
            // 第三方庫第三方框架,效率低,內存泄漏  
                    NSLog(@"%@", responseObject);  
                } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
                    NSLog(@"%@", error);  
                }];  
            }  
              
            #pragma mark - JSON  
            - (void)JSONData  
            {  
                AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
                  
                // 原本需要拼接get訪問URL ? & =  
                NSDictionary *dict = @{@"format": @"json"};  
                  
                // 網絡訪問是異步的,回調是主線程的,因此程序員不用管在主線程更新UI的事情  
                [manager GET:@"http://localhost/videos.php" parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {  
                    NSLog(@"%@", responseObject);  
                    // 提問:NSURLConnection異步方法回調,是在子線程  
                    
            // 得到回調之后,通常更新UI,是在主線程  
                    NSLog(@"%@", [NSThread currentThread]);  
                } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
                    NSLog(@"%@", error);  
                }];  
            }  
              
            #pragma mark - POST登錄  
            - (void)postLogin  
            {  
                AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
                  
                // 原本需要拼接get訪問URL ? & =  
                NSDictionary *dict = @{@"username": @"wangwu", @"password" : @"wang"};  
                  
                // 網絡訪問是異步的,回調是主線程的,因此程序員不用管在主線程更新UI的事情  
                [manager POST:@"http://localhost/login.php" parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {  
                    NSLog(@"%@", responseObject);  
                    // 提問:NSURLConnection異步方法回調,是在子線程  
                    
            // 得到回調之后,通常更新UI,是在主線程  
                    NSLog(@"%@", [NSThread currentThread]);  
                } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
                    NSLog(@"%@", error);  
                }];  
            }  
              
            #pragma mark - GET登錄  
            - (void)getLogin  
            {  
                AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
                  
                // 原本需要拼接get訪問URL ? & =  
                NSDictionary *dict = @{@"username": @"wangwu", @"password" : @"wang"};  
                  
                // 網絡訪問是異步的,回調是主線程的,因此程序員不用管在主線程更新UI的事情  
                [manager GET:@"http://localhost/login.php" parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {  
                    NSLog(@"%@", responseObject);  
                    // 提問:NSURLConnection異步方法回調,是在子線程  
                    
            // 得到回調之后,通常更新UI,是在主線程  
                    NSLog(@"%@", [NSThread currentThread]);  
                } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
                    NSLog(@"%@", error);  
                }];  
            }  
              
            @end  
            @import url(http://www.shnenglu.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
            posted on 2016-10-28 10:55 聶文龍 閱讀(152) 評論(0)  編輯 收藏 引用
            久久综合视频网站| 97久久精品人人澡人人爽| 综合久久一区二区三区| A级毛片无码久久精品免费| 久久无码人妻一区二区三区 | 97久久超碰国产精品2021| 久久99热只有频精品8| 一本大道久久a久久精品综合| 伊人久久无码精品中文字幕| 99精品久久精品一区二区| 久久精品国产亚洲7777| 久久亚洲精品无码AV红樱桃| 狠狠久久综合| 久久久无码人妻精品无码| 久久最新免费视频| 久久精品国产亚洲网站| 一本色道久久88综合日韩精品| 精品久久久久久亚洲| 久久人做人爽一区二区三区| 国产一区二区精品久久岳| 久久精品中文无码资源站 | 久久久久亚洲AV综合波多野结衣 | 中文字幕热久久久久久久| 久久久综合香蕉尹人综合网| 国产成人精品免费久久久久| 亚洲αv久久久噜噜噜噜噜| 精品无码人妻久久久久久| 国产精品视频久久久| 亚洲精品乱码久久久久久久久久久久| 久久久久久久亚洲精品| 狠狠人妻久久久久久综合蜜桃| 91精品国产综合久久久久久| 亚洲国产精品无码久久久秋霞2 | 一本久久a久久精品综合夜夜| 中文字幕久久久久人妻| 东方aⅴ免费观看久久av| 久久久久久久波多野结衣高潮 | 日韩精品久久久久久久电影| 午夜精品久久久久| 久久亚洲精品国产精品| 久久精品国产亚洲AV嫖农村妇女|