您的位置:首页 > 其它

AFNetworking的使用

2015-09-10 09:11 302 查看
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

static NSString*const BaseURLString = @"http://www.raywenderlich.com/downloads/weather_sample/";

// 1

NSString *weatherUrl = [NSStringstringWithFormat:@"%@weather.php?format=json",BaseURLString];

NSURL *url = [NSURLURLWithString:weatherUrl];

NSURLRequest *request = [NSURLRequestrequestWithURL:url];

// 2

AFJSONRequestOperation *operation =

[AFJSONRequestOperationJSONRequestOperationWithRequest:request

success:^(NSURLRequest*request, NSHTTPURLResponse *response, id JSON) {

//

NSDictionary*dicWeather = (NSDictionary *)JSON;

NSLog(@"result:%@",dicWeather);

}

failure:^(NSURLRequest*request, NSHTTPURLResponse *response, NSError *error, id JSON) {

UIAlertView*alertView = [[UIAlertView alloc] initWithTitle:@"Error RetrievingWeather"

message:[NSStringstringWithFormat:@"%@",error]

delegate:self

cancelButtonTitle:@"OK"

otherButtonTitles: nil];

[alertView show];

}];

// 5

[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)#import “UIImageView+AFNetworking.h”

(2)UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(40, 80, 40, 40)];

__weak UIImageView *_imageView = imageView;

[imageViewsetImageWithURLRequest:[[NSURLRequest alloc] initWithURL:[NSURLURLWithString:@"http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0001_sunny.png"]]

placeholderImage:[UIImage imageNamed:@"placeholder.png"]

success:^(NSURLRequest *request,NSHTTPURLResponse *response, UIImage *image) {

_imageView.image = image;

[_imageView setNeedsDisplay];

}

failure:^(NSURLRequest *request, NSHTTPURLResponse*response, NSError *error) {

;

}];

[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

AFHTTPClient *client= [[AFHTTPClient alloc] initWithBaseURL:baseURL];

[clientregisterHTTPOperationClass:[AFJSONRequestOperation class]];

[clientsetDefaultHeader:@"Accept" value:@"application/json"];

[client postPath:@"weather.php"

parameters:parameters

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

self.weather =responseObject;

self.title = @"HTTPPOST";

[self.tableViewreloadData];

}

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

UIAlertView *av =[[UIAlertView alloc] initWithTitle:@"Error Retrieving Weather"

message:[NSStringstringWithFormat:@"%@",error]

delegate:nil

cancelButtonTitle:@"OK" otherButtonTitles:nil];

[av show];

}

];

[client getPath:@"weather.php"

parameters:parameters

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

self.weather =responseObject;

self.title = @"HTTP GET";

[self.tableViewreloadData];

}

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

UIAlertView *av =[[UIAlertView alloc] initWithTitle:@"Error Retrieving Weather"

message:[NSStringstringWithFormat:@"%@",error]

delegate:nil

cancelButtonTitle:@"OK" otherButtonTitles:nil];

[av show];

}

];

8.AFNetworking更新背景图片

Note:

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

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

AFHTTPClient用来进行更底层的请求

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

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

AFImageRequestOperation用来加载图片
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: