AFNetworking请求各种类型的数据备忘笔记,网络操作与AFNetworking
分类:多线程

明明,苹果搞的一套框架NSContention发送伏乞与接受诉求的艺术极其麻烦。操作起来非常不方便人民群众。下边我们就注重说一下有关AFNetworking中GET只传递一个参数的原委,不止要做区分各样须求设置各类分化的参数,何况还要时常在八线程里操作,同一时间还要对供付与重返的数据做各样类别化的操作,同期还要思考要求数据的安全等一群难题。

一、从前的多少个互联网框架

AFNetworking乞求各体系型的数量备忘笔记 

一、早先的多少个网络框架
1、ASI框架: HTTP终结者.很牛, 不过有BUG, 已经终止更新.
2、MKNetworkKit(韩国人写的卡塔尔(قطر‎.
3、AFN一贯还在更新.

1、ASI框架: HTTP终结者.很牛, 不过有BUG, 已经终止更新.

AFNetworking是三个轻量级的iOS网络通讯类库。它创立在NSU酷路泽LConnection和NSOperation等类库的底工上,让非常多互连网通讯效能的兑现变得不行大约。它扶助HTTP乞请和依照REST的互连网服务(包涵GET、POST、 PUT、DELETE等)。扶植ARC。Github地址: 

AFNetworking的面世:MAC/iOS设计的一套网络框架.(为了简化网络操作卡塔尔(قطر‎

2、MKNetworkKit (日本人写的卡塔尔国.

1.    //  

地址:

3、AFN一贯还在更新.

2.    //  MJViewController.m  

*AFN静心与网络数据传输,以致互联网中十二线程的管理.

 

3.    //  03.AFN演练 

二、AFNetworking的使用

AFNetworking的出现:MAC/iOS设计的一套互连网框架.(为了简化网络操作卡塔尔国

 4.    //  

1、AFN特性 :
*签到传参数时,传递辞典就能够.(键名称为参数名,键值为参数值卡塔尔国.
*机动到子线程中实践,推行完后回来主线程.
*归来的结果自动连串化为NSDictionary.

 

5.    //  Created by apple on 14-4-30.  

2、使用AFN注意 :
*AFHTTPRequestOperationManager封装了经过HTTP左券与Web应用程序实行报纸发表的常用方法.(那一个实例化的时候不是单例, 因为没有shared字卡塔尔(قطر‎
*包蕴创建必要/响应体系化/互联网监察和控制/数据安全.
*艺术等都以以AF最早的.

地址:

6.    //  Copyright (c) 2014年 itcast. All rights reserved.  

3、AFN能做的 (互联网中的都蕴含了卡塔尔(قطر‎:
*GET/POST/PUT/DELETE/HEAD请求.
*JSON数据深入分析/Plist数据深入解析.(不支持XML数据剖判卡塔尔国
*POSTJSON.
*上传/下载.

 

7.    //  

4、使用步骤 : (可参照表达文书档案)
1.第一须要实例化三个呼吁微电脑AFHTTPRequestOperationManager.
2.装置央浼的数目格式:暗中同意是二进制.(不是可改卡塔尔(قطر‎
*AFHTTPRequestSerializer(二进制)
*AFJSONRequestSerializer(JSON)
*AFPropertyListRequestSerializer(Plist)
3.装置响应的多寡格式:暗中认可是JSON.(不是可改卡塔尔(قطر‎
*AFHTTPResponseSerializer(二进制)
*AFJSONResponseSerializer(JSON)
*AFPropertyListResponseSerializer(Plist)
*AFXMLParserResponseSerializer(XML)
*AFImageResponseSerializer(Image)
*AFCompoundResponseSerializer(组合的)
4.若是响应者的MIMEType不科学,就要改过acceptableContentTypes.
5.调用艺术,发送响应的伸手(GET/POST...卡塔尔国.

*AFN专心与互连网数据传输,以致互联网中三十二线程的管理.

8.    

关于修正AFN源码:平日连串化时做对text/plan等的支撑时,能够一劳永逸的改正源代码,在acceptableContentTypes中期维更改就能够。
AFN进行GET、POST登录:

 

  9.    #import "MJViewController.h"  10.  #import "AFNetworking.h"  

  1. #pragma mark - get/post登录
  2. - (void)getLogin {
  3.     //1.管理器
  4.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  5.  
  6.     //2.设置签到参数
  7.     NSDictionary *dict = @{ @"username":@"xn", @"password":@"123" };
  8.  
  9.     //3.请求
  10.     [manager GET:@"" parameters:dict success: ^(AFHTTPRequestOperation *operation, id responseObject) {
  11.         NSLog(@"GET --> %@, %@", responseObject, [NSThread currentThread]卡塔尔(قطر‎; //自动再次来到主线程
  12.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {
  13.         NSLog(@"%@", error);
  14.     }];
  15. }
  16.  
  17. /**
  18.  *  和方面包车型地铁GET用法完全相近, 唯有一个POST参数不等同
  19.  */
  20. - (void)postLogin {
  21.     //1.管理器
  22.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  23.  
  24.     //2.设置签到参数
  25.     NSDictionary *dict = @{ @"username":@"xn", @"password":@"123" };
  26.  
  27.     //3.请求
  28.     [manager POST:@"" parameters:dict success: ^(AFHTTPRequestOperation *operation, id responseObject) {
  29.         NSLog(@"POST --> %@, %@", responseObject, [NSThread currentThread]卡塔尔; //自动再次回到主线程
  30.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {
  31.         NSLog(@"%@", error);
  32.     }];
  33. }

二、AFNetworking的使用

11.    

AFN实行互连网数据分析,获取Plist,JSON,XML(AFN不接济电动剖判XML,有极其的框架去做,如SAX,PULL,KissXML等)

 

 12.  @interface MJViewController () 

  1. #pragma mark - get 数据解析
  2. - (void)getJSON {
  3.     //1.央浼微处理机
  4.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  5.  
  6.     //2.发起呼吁
  7.     [manager GET:@"" parameters:nil success: ^(AFHTTPRequestOperation *operation, id responseObject) {
  8.         NSLog(@"%@", responseObject);
  9.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {
  10.         NSLog(@"%@", error);
  11.     }];
  12. }
  13.  
  14. /**
  15.  *  不帮忙XML数据剖析
  16.  */
  17. - (void)getXML {
  18.     //1.管理器
  19.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  20.  
  21.     //2.设置重返数据类型
  22.     manager.responseSerializer = [AFXMLParserResponseSerializer serializer]; //先实例化一下
  23.  
  24.     //3.发起呼吁
  25.     [manager GET:@"" parameters:nil success: ^(AFHTTPRequestOperation *operation, id responseObject) {
  26.         NSLog(@"%@", responseObject);
  27.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {
  28.         NSLog(@"%@", error);
  29.     }];
  30. }
  31.  
  32. - (void)getPlist {
  33.     //1.管理器
  34.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  35.  
  36.     //2.设置response类型
  37.     manager.responseSerializer = [AFPropertyListResponseSerializer serializer]; //是Response, 别写成request了. 修改为plist类型.
  38.     manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"]; //这几个能够一直往框架之中期维订正. | 项目中搜索xuneng, 找到稳定点.
  39.  
  40.     //3.请求
  41.     [manager GET:@"" parameters:nil success: ^(AFHTTPRequestOperation *operation, id responseObject) {
  42.         NSLog(@"%@", responseObject);
  43.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {
  44.         NSLog(@"%@", error);
  45.     }];
  46. }

1、AFN特性 :

 13.    

用AFN来POST JSON数据,上传、下载等。(上传、下载主页表达上有

*签到传参数时,传递词典就可以.(键名叫参数名,键值为参数值卡塔尔(قطر‎.

 14.  @end  

  1. #pragma mark - post json数据与上传文件等
  2. - (void)postJSON {
  3.     //1.管理器
  4.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  5.  
  6.     //2.设定类型. (这里要设置request-response的体系卡塔尔
  7.     manager.requestSerializer = [AFJSONRequestSerializer serializer];
  8.     manager.responseSerializer = [AFHTTPResponseSerializer serializer]; //这些决定了下边responseObject再次来到的门类
  9. //    manager.responseSerializer = [AFJSONResponseSerializer serializer];
  10. //  manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"];
  11.      
  12.     //2.设置签到参数
  13.     NSDictionary *dict = @{ @"username":@"xn", @"password":@"123" };
  14.  
  15.     //3.发送央浼
  16.     [manager POST:@"" parameters:dict success: ^(AFHTTPRequestOperation *operation, id responseObject) {
  17. //      NSLog(@"postjson--> %@", responseObject卡塔尔国;  //那样突显JSON的话需求设置text/plain
  18.         NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];

*自行到子线程中举办,推行完后再次来到主线程.

15.    

*回去的结果机关体系化为NSDictionary.

 16.  @implementation MJViewController 

 

 17.  /** 

2、使用AFN注意 :

18.    要使用正规的AFN互联网访谈 

*AFHTTPRequestOperationManager封装了经过HTTP公约与Web应用程序进行广播发表的常用方法.(这些实例化的时候不是单例, 因为尚未shared字卡塔尔

19.    

*席卷创建央浼/响应种类化/互联网监督/数据安全.

 20.    1. AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 

*艺术等都以以AF初叶的.

21.   

 

 22.      全体的网络央求,均有manager发起 

 

23.   

 

 24.    2. 内需静心的是,私下认可提交需要的数码是二进制的,重临格式是JSON 

3、AFN能做的 (互联网中的都饱含了卡塔尔国:

25.    

*GET/POST/PUT/DELETE/HEAD请求.

 26.      1> 即便提交数据是JSON的,须求将需要格式设置为AFJSONRequestSerializer 27.      2> 倘诺回到格式不是JSON的, 

*JSON数据解析/Plist数据深入剖判.(不协助XML数据拆解深入分析卡塔尔

  1.  

*POSTJSON.

   29.    3. 倡议格式 30.   

*上传/下载.

 31.        AFHTTPRequestSerializer            二进制格式 

 

32.        AFJSONRequestSerializer            JSON 

 

33.        AFPropertyListRequestSerializer    PList(是一种极其的XML,深入分析起来相对轻松卡塔尔(قطر‎ 

 

34.    

4、使用步骤 : (可参照他事他说加以考察表明文书档案)

 35.    4. 重返格式 

1.第一要求实例化一个号召微处理机AFHTTPRequestOperationManager.

36.    

2.安装央求的数码格式:私下认可是二进制.(可改卡塔尔(قطر‎

 37.        AFHTTPResponseSerializer          二进制格式 

*AFHTTPRequestSerializer(二进制)

38.        AFJSONResponseSerializer          JSON 

*AFJSONRequestSerializer(JSON)

39.        AFXMLParserResponseSerializer      XML,只可以回去XMLParser,还亟需自个儿通过代理方法深入深入分析 

*AFPropertyListRequestSerializer(Plist)

40.        AFXMLDocumentResponseSerializer (Mac OS X) 

3.设置响应的多寡格式:私下认可是JSON.(可改卡塔尔国

41.        AFPropertyListResponseSerializer  Plist 

*AFHTTPResponseSerializer(二进制)

42.        AFImageResponseSerializer          Image 

*AFJSONResponseSerializer(JSON)

43.        AFCompoundResponseSerializer      组合 

*AFPropertyListResponseSerializer(Plist)

44.    */  45.    46.  - (void)viewDidLoad  

*AFXMLParserResponseSerializer(XML)

47.  {  48.      [super viewDidLoad]; 

*AFImageResponseSerializer(Image)

 49.        

*AFCompoundResponseSerializer(组合的)

 50.      [self reach];  51.  }  

4.若是响应者的MIMEType不正确,将要改善acceptableContentTypes.

52.    53.  #pragma mark - 演练  

5.调用艺术,发送响应的伏乞(GET/POST...State of Qatar.

54.  #pragma mark - 检查测量检验网络连接  

 

55.  - (void)reach  5

 

6.  {  57.      /** 

有关改革AFN源码:平日体系化时做对text/plan等的援救时,能够一劳永逸的校正源代码,在acceptableContentTypes中期维更正就能够。

58.        AFNetworkReachabilityStatusUnknown          = -1,  // 未知

AFN进行GET、POST登录:

 59.        AFNetworkReachabilityStatusNotReachable    = 0,  // 无连接 

 

60.        AFNetworkReachabilityStatusReachableViaWWAN = 1,  // 3G 花钱 

[objc] view plaincopy

61.        AFNetworkReachabilityStatusReachableViaWiFi = 2,  // 局域网络,不花钱 62.        */ 

 

 63.      // 即便要检查测量检验网络状态的生成,必需用检查评定微机的单例的startMonitoring  64.      [[AFNetworkReachabilityManager sharedManager] startMonitoring];  

  1. #pragma mark - get/post登录  
  2. - (void)getLogin {  
  3.     //1.管理器  
  4.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
  5.   
  6.     //2.设置签到参数  
  7.     NSDictionary *dict = @{ @"username":@"xn", @"password":@"123" };  
  8.   
  9.     //3.请求  
  10.     [manager GET:@"" parameters:dict success: ^(AFHTTPRequestOperation *operation, id responseObject) {  
  11.         NSLog(@"GET --> %@, %@", responseObject, [NSThread currentThread]State of Qatar; //自动再次来到主线程  
  12.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {  
  13.         NSLog(@"%@", error);  
  14.     }];  
  15. }  
  16.   
  17. /** 
  18.  *  和方面包车型大巴GET用法完全相符, 独有五个POST参数不相似 
  19.  */  
  20. - (void)postLogin {  
  21.     //1.管理器  
  22.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
  23.   
  24.     //2.设置签到参数  
  25.     NSDictionary *dict = @{ @"username":@"xn", @"password":@"123" };  
  26.   
  27.     //3.请求  
  28.     [manager POST:@"" parameters:dict success: ^(AFHTTPRequestOperation *operation, id responseObject) {  
  29.         NSLog(@"POST --> %@, %@", responseObject, [NSThread currentThread]卡塔尔; //自动再次回到主线程  
  30.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {  
  31.         NSLog(@"%@", error);  
  32.     }];  
  33. }  

65.        

AFN进行互连网数据深入分析,获取Plist,JSON,XMLAFN不援救活动解析XML,有极度的框架去做,如SAX,PULL,KissXML等)

 66.      // 检查评定互联网连接的单例,互连网转移时的回调方法  

 

67.      [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { 

 

 68.          NSLog(@"%d", status);  

[objc] view plaincopy

69.      }];  

 

70.  }  

  1. #pragma mark - get 数据分析  
  2. - (void)getJSON {  
  3.     //1.伏乞管理器  
  4.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
  5.   
  6.     //2.发起呼吁  
  7.     [manager GET:@"" parameters:nil success: ^(AFHTTPRequestOperation *operation, id responseObject) {  
  8.         NSLog(@"%@", responseObject);  
  9.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {  
  10.         NSLog(@"%@", error);  
  11.     }];  
  12. }  
  13.   
  14. /** 
  15.  *  不援助XML数据剖判 
  16.  */  
  17. - (void)getXML {  
  18.     //1.管理器  
  19.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
  20.   
  21.     //2.设置重临数据类型  
  22.     manager.responseSerializer = [AFXMLParserResponseSerializer serializer]; //先实例化一下  
  23.   
  24.     //3.发起号召  
  25.     [manager GET:@"" parameters:nil success: ^(AFHTTPRequestOperation *operation, id responseObject) {  
  26.         NSLog(@"%@", responseObject);  
  27.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {  
  28.         NSLog(@"%@", error);  
  29.     }];  
  30. }  
  31.   
  32. - (void)getPlist {  
  33.     //1.管理器  
  34.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
  35.   
  36.     //2.设置response类型  
  37.     manager.responseSerializer = [AFPropertyListResponseSerializer serializer]; //是Response, 别写成request了. 修改为plist类型.  
  38.     manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"]; //这一个能够向来往框架之中期维改善.  
  39.   
  40.     //3.请求  
  41.     [manager GET:@"" parameters:nil success: ^(AFHTTPRequestOperation *operation, id responseObject) {  
  42.         NSLog(@"%@", responseObject);  
  43.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {  
  44.         NSLog(@"%@", error);  
  45.     }];  
  46. }  

71.    

用AFN来POST JSON数据,上传、下载等。(上传、下载主页表明上有)

 72.  #pragma mark - Session 下载  

 

73.  - (void)sessionDownload  

 

74.  { 

[objc] view plaincopy

 75.      NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];  

 

76.      AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:config];  

  1. #pragma mark - post json数据与上传文件等  
  2. - (void)postJSON {  
  3.     //1.管理器  
  4.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
  5.   
  6.     //2.设定类型. (这里要设置request-response的门类卡塔尔国  
  7.     manager.requestSerializer = [AFJSONRequestSerializer serializer];  
  8.     manager.responseSerializer = [AFHTTPResponseSerializer serializer]; //这一个决定了下面responseObject再次回到的花色  
  9. //    manager.responseSerializer = [AFJSONResponseSerializer serializer];  
  10. //  manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"];  
  11.       
  12.     //2.设置签到参数  
  13.     NSDictionary *dict = @{ @"username":@"xn", @"password":@"123" };  
  14.   
  15.     //3.发送供给  
  16.     [manager POST:@"" parameters:dict success: ^(AFHTTPRequestOperation *operation, id responseObject) {  
  17. //      NSLog(@"postjson--> %@", responseObject卡塔尔国;  //那样彰显JSON的话要求设置text/plain  
  18.         NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];  
  19.         NSLog(@"%@",result);  
  20.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {  
  21.         NSLog(@"%@", error);  
  22.     }];  
  23. }

77.       

 78.      NSString *urlString = @"";  

79.      urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  

80.      

  81.      NSURL *url = [NSURL URLWithString:urlString];  

82.      NSURLRequest *request = [NSURLRequest requestWithURL:url];  

83.        

 84.      NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {  

85.          // 内定下载文件保留的路线  

86.  //        NSLog(@"%@ %@", targetPath, response.suggestedFilename);  

87.          // 将下载文件保留在缓存路线中  

88.          NSString *cacheDir = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];  

89.          NSString *path = [cacheDir stringByAppendingPathComponent:response.suggestedFilename];  

90.           

 91.          // UHavalLWithString重临的是网络的U福睿斯L,假若应用本地UTucsonL,需求注意  

92.          NSURL *fileURL1 = [NSURL URLWithString:path]; 

 93.          NSURL *fileURL = [NSURL fileURLWithPath:path]; 

 94.           

 95.          NSLog(@"== %@ |||| %@", fileURL1, fileURL);  

96.           

 97.          return fileURL; 

 98.      } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {  

99.          NSLog(@"%@ %@", filePath, error);  100.      }];  

101.       

 102.      [task resume];  

103.  }  

104.   

 105.  #pragma mark - POST JSON  

106.  - (void)postJSON  

107.  {  

108.      AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 

 109.        

110.      NSDictionary *dict = @{@"name": @"zhangsan"};  

111.      NSDictionary *dict1 = @{@"name": @"wangwu"};  

112.      NSArray *array = @[dict, dict1];  

113.      // 设置须要格式

 114.      manager.requestSerializer = [AFJSONRequestSerializer serializer];  115.      // 设置重返格式  

116.      manager.responseSerializer = [AFHTTPResponseSerializer serializer];  117.        

118.      [manager POST:@"" parameters:array success:^(AFHTTPRequestOperation *operation, id responseObject) {  

119.          NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];  

120.            

121.          NSLog(@"%@", result);  

122.      } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  

123.            

124.      }];  

125.        

126.  }  

127.    

128.  #pragma mark - 随机文件名上传  

129.  - (void)postUpload1  

130.  {  

131.      // 本地上传给服务器时,未有鲜明的U兰德酷路泽L,倒霉用MD5的点子管理  

132.      AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  

133.      manager.responseSerializer = [AFHTTPResponseSerializer serializer];  134.        

135.      [manager POST:@"" parameters:nil constructingBodyWithBlock:^(idformData) {  

136.            

137.          NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"头像1.png" withExtension:nil];  

138.            

139.          // 要上传保存在服务器中的名称  

140.          // 使用时间来作为文件名 二零一四-04-30 14:20:57.png  

141.          // 让不相同的顾客消息,保存在不一致目录中  

142.          NSDateFormatter *formatter = [[NSDateFormatter alloc] init];  

143.          // 设置日期格式  

144.          formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";  

145.          NSString *fileName = [formatter stringFromDate:[NSDate date]];  146.            

147.          [formData appendPartWithFileURL:fileURL name:@"uploadFile" fileName:fileName mimeType:@"image/png" error:NULL];  

148.            

149.      } success:^(AFHTTPRequestOperation *operation, id responseObject) {  150.          NSLog(@"OK");  

151.      } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  

152.          NSLog(@"error");  

153.      }];  

154.  }  

155.    

156.  #pragma mark - POST上传  

157.  - (void)postUpload  

158.  {  

159.      AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  

160.      // AFHTTPResponseSerializer正是不奇怪的HTTP央浼响应结果:NSData  

161.      // 当须求的回来数据不是JSON,XML,PList,UIImage之外,使用AFHTTPResponseSerializer  

162.      // 比如重临叁个html,text...  

163.      //  

164.      // 实际上正是AFN未有对响应数据做任什么地区理的情景  

165.      manager.responseSerializer = [AFHTTPResponseSerializer serializer];  166.        

167.      // formData是根据了AFMultipartFormData的对象  

168.      [manager POST:@"" parameters:nil constructingBodyWithBlock:^(idformData) {

169.

170.          // 将本地的文本上传至服务器

171.          NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"头像1.png" withExtension:nil];

172.

173.          [formData appendPartWithFileURL:fileURL name:@"uploadFile" error:NULL];

174.      } success:^(AFHTTPRequestOperation *operation, id responseObject) {

175.          NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];

176.

177.          NSLog(@"完成 %@", result);

178.      } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

179.          NSLog(@"错误 %@", error.localizedDescription);

180.      }];

181.  }

182.

183.  #pragma mark - JSON

184.  - (void)XMLData

185.  {

186.      AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

187.

188.      // 再次回到的数码格式是XML

189.      manager.responseSerializer = [AFXMLParserResponseSerializer serializer];

190.

191.      NSDictionary *dict = @{@"format": @"xml"};

192.

193.      // 互联网访谈是异步的,回调是主线程的,由此程序猿不用管在主线程更新UI的工作

194.      [manager GET:@"" parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {

195.

196.          // 若是结果是XML,相通供给接纳6个代理方法解析,恐怕接收第三方库

197.          // 第三方库第三方框架,作用低,内存泄漏

198.          NSLog(@"%@", responseObject);

199.      } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

200.          NSLog(@"%@", error);

201.      }];

202.  }

203.

204.  #pragma mark - JSON

205.  - (void)JSONData

206.  {

207.      AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

208.

209.      // 原来需求拼接get访谈U昂CoraL ? & =

210.      NSDictionary *dict = @{@"format": @"json"};

211.

212.      // 互联网访问是异步的,回调是主线程的,由此技术员不用管在主线程更新UI的事务

213.      [manager GET:@"" parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {

214.          NSLog(@"%@", responseObject);

215.          // 提问:NSU库罗德LConnection异步方法回调,是在子线程

216.          // 得到回调之后,平时更新UI,是在主线程

217.          NSLog(@"%@", [NSThread currentThread]);

218.      } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

219.          NSLog(@"%@", error);

220.      }];

221.  }

222.

223.  #pragma mark - POST登录

224.  - (void)postLogin

225.  {

226.      AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

227.

228.      // 原来需求拼接get访谈UCRUISERL ? & =

229.      NSDictionary *dict = @{@"username": @"wangwu", @"password" : @"wang"};

230.

231.      // 互联网访谈是异步的,回调是主线程的,因而程序猿不用管在主线程更新UI的事情

232.      [manager POST:@"" parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {

233.          NSLog(@"%@", responseObject);

234.          // 提问:NSU奥迪Q5LConnection异步方法回调,是在子线程

235.          // 得到回调之后,平常更新UI,是在主线程

236.          NSLog(@"%@", [NSThread currentThread]);

237.      } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

238.          NSLog(@"%@", error);

239.      }];

240.  }

241.

242.  #pragma mark - GET登录

243.  - (void)getLogin

244.  {

245.      AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

246.

247.      // 原来需求拼接get访谈U福特ExplorerL ? & =

248.      NSDictionary *dict = @{@"username": @"wangwu", @"password" : @"wang"};

249.

250.      // 互联网访问是异步的,回调是主线程的,因而技士不用管在主线程更新UI的事情

251.      [manager GET:@"" parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {

252.          NSLog(@"%@", responseObject);

253.          // 提问:NSURubiconLConnection异步方法回调,是在子线程

254.          // 获得回调之后,平常更新UI,是在主线程

255.          NSLog(@"%@", [NSThread currentThread]);

256.      } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

257.          NSLog(@"%@", error);

258.      }];

259.  }

260.

@end

本文由10bet手机官网发布于多线程,转载请注明出处:AFNetworking请求各种类型的数据备忘笔记,网络操作与AFNetworking

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文