AFNetworking的使用

来源:互联网 发布:网络视频下载器哪个好 编辑:程序博客网 时间:2024/05/16 23:02

1.下载AFNetworking资源包 https://github.com/AFNetworking/AFNetworking。

2.将资源包添加到工程文件。

3.在工程的Supporting File群组中打开预编译头文件XXX-Prefix.pch。然后在别的import后面添加如下一行代码#import “AFNetworking”

将AFNetworking添加到预编译头文件,意味着这个框架会被自动的添加到工程的所有源代码文件中。

4.AFNetworking通过网络来加载和处理结构化的数据非常明智,它支持JSON,XML,Property List。

[plain] view plaincopy
  1. static NSString*const BaseURLString = @"http://www.raywenderlich.com/downloads/weather_sample/";  
  2.      
  3.     // 1  
  4.     NSString *weatherUrl = [NSStringstringWithFormat:@"%@weather.php?format=json",BaseURLString];  
  5.     NSURL *url = [NSURLURLWithString:weatherUrl];  
  6.     NSURLRequest *request = [NSURLRequestrequestWithURL:url];  
  7.      
  8.     // 2  
  9.     AFJSONRequestOperation *operation =  
  10.     [AFJSONRequestOperationJSONRequestOperationWithRequest:request  
  11.                                               success:^(NSURLRequest*request, NSHTTPURLResponse *response, id JSON) {  
  12.                                                  //  
  13.                                                  NSDictionary*dicWeather = (NSDictionary *)JSON;  
  14.                                                  NSLog(@"result:%@",dicWeather);  
  15.                                               }  
  16.                                               failure:^(NSURLRequest*request, NSHTTPURLResponse *response, NSError *error, id JSON) {  
  17.                                                  UIAlertView*alertView = [[UIAlertView alloc] initWithTitle:@"Error RetrievingWeather"  
  18.                                                                                                message:[NSStringstringWithFormat:@"%@",error]  
  19.                                                                                               delegate:self  
  20.                                                                                       cancelButtonTitle:@"OK"  
  21.                                                                                       otherButtonTitles: nil];  
  22.                                                  [alertView show];  
  23.                                               }];  
  24.     // 5  
  25.     [operation start];  

(1)根据基本的URL构造除完整的一个URL,然后通过这个完整的URL获得一个NSURL对象,然后根据这个url获得一个NSURLRequest。

(2)AFJSONRequestOperation是一个完整的类,整合了从网络中获取数据并对JSON进行解析。

(3)当请求成功,则运行成功块。在本例中,把解析出来的天气数据从JSON变量转换为一个字典(dictionary),并将其存储在字典中。

(4)如果运行出问题了,则运行失败块(failure block),比如网络不可用。如果failure block被调用了,将会通过提示框显示错误信息。

 

6.AFNetWorking异步加载图片

[plain] view plaincopy
  1. (1)#import “UIImageView+AFNetworking.h”  
  2. (2)UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(40, 80, 40, 40)];  
  3.     __weak UIImageView *_imageView = imageView;  
  4.     [imageViewsetImageWithURLRequest:[[NSURLRequest alloc] initWithURL:[NSURLURLWithString:@"http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0001_sunny.png"]]  
  5.                    placeholderImage:[UIImage imageNamed:@"placeholder.png"]  
  6.                            success:^(NSURLRequest *request,NSHTTPURLResponse *response, UIImage *image) {  
  7.                               _imageView.image = image;  
  8.                                
  9.                               [_imageView setNeedsDisplay];  
  10.                            }  
  11.                            failure:^(NSURLRequest *request, NSHTTPURLResponse*response, NSError *error) {  
  12.                               ;  
  13.                            }];  
  14.     [self.view addSubview:imageView];  
 

7.GET 和POST请求

(1).构建一个baseURL,以及一个参数字典,并将这两个变量传给AFHTTPClient.

(2).将AFJSONRequestOperation注册为HTTP的操作, 这样就可以跟之前的示例一样,可以获得解析好的JSON数据。

(3).做了一个GET请求,这个请求有一对block:success和failure。

(4).POST请求跟GET一样

[plain] view plaincopy
  1. AFHTTPClient *client= [[AFHTTPClient alloc] initWithBaseURL:baseURL];  
  2. [clientregisterHTTPOperationClass:[AFJSONRequestOperation class]];  
  3. [clientsetDefaultHeader:@"Accept" value:@"application/json"];  
  4. [client postPath:@"weather.php"  
  5.               parameters:parameters  
  6.                 success:^(AFHTTPRequestOperation *operation, id responseObject) {  
  7.                      self.weather =responseObject;  
  8.                      self.title = @"HTTPPOST";  
  9.                      [self.tableViewreloadData];  
  10.                  }  
  11.                 failure:^(AFHTTPRequestOperation *operation, NSError*error) {  
  12.                      UIAlertView *av =[[UIAlertView alloc] initWithTitle:@"Error Retrieving Weather"  
  13.                                                                  message:[NSStringstringWithFormat:@"%@",error]  
  14.                                                                 delegate:nil  
  15.                                                        cancelButtonTitle:@"OK" otherButtonTitles:nil];  
  16.                      [av show];  
  17.    
  18.                  }  
  19.          ];  
  20.    
  21. [client getPath:@"weather.php"  
  22.              parameters:parameters  
  23.                success:^(AFHTTPRequestOperation *operation, id responseObject) {  
  24.                     self.weather =responseObject;  
  25.                     self.title = @"HTTP GET";  
  26.                     [self.tableViewreloadData];  
  27.                 }  
  28.                failure:^(AFHTTPRequestOperation *operation, NSError*error) {  
  29.                     UIAlertView *av =[[UIAlertView alloc] initWithTitle:@"Error Retrieving Weather"  
  30.                                                                  message:[NSStringstringWithFormat:@"%@",error]  
  31.                                                                delegate:nil  
  32.                                                       cancelButtonTitle:@"OK" otherButtonTitles:nil];  
  33.                     [av show];  
  34.    
  35.                 }  
  36.          ];  
  

8.AFNetworking更新背景图片

Note:

AFJSONOperation,AFPropertyListOperation, AFXMLOperation用来解析结构化数据。

UIImageView+AFNetworking用来快捷的填充image view

AFHTTPClient用来进行更底层的请求

用自定义的AFHTTPClient子类来访问一个web service。

AFNetworkActivityIndicatiorManager用来给用户做出网络访问的提示。

AFImageRequestOperation用来加载图片。

0 0
原创粉丝点击