• <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://m.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精品依人久久久大香线蕉97| 免费精品久久天干天干| 亚洲欧美日韩中文久久| 日韩人妻无码一区二区三区久久| 国产V综合V亚洲欧美久久| 精品久久久久久无码国产| 人妻无码精品久久亚瑟影视| 日产精品久久久一区二区| 97久久超碰成人精品网站| 久久久国产精品| 99久久国语露脸精品国产| A级毛片无码久久精品免费| 久久久久人妻一区二区三区vr| 亚洲伊人久久成综合人影院| 国产精品欧美久久久久无广告| 亚洲午夜福利精品久久| 国产精品久久久久影视不卡| 久久婷婷五月综合97色直播| 久久91精品久久91综合| 一本一本久久aa综合精品 | 91精品免费久久久久久久久| 久久成人小视频| 久久影院综合精品| 亚洲国产精品综合久久网络| 久久91精品国产91久久户| 7777精品久久久大香线蕉| 亚洲精品国产综合久久一线| 久久精品无码专区免费东京热 | 久久九九久精品国产| 久久久久久久国产免费看| 国内精品久久久久久99| 99精品久久精品一区二区| 久久久久久无码国产精品中文字幕 | 国产精品久久国产精麻豆99网站| 亚洲国产精品综合久久一线| 国产高清美女一级a毛片久久w | 日日躁夜夜躁狠狠久久AV| 久久天天躁狠狠躁夜夜avapp| 久久久久亚洲AV无码永不| 国产成人精品久久| 亚洲女久久久噜噜噜熟女|