0
点赞
收藏
分享

微信扫一扫

AFNetworking了解

 

AFNetworking了解

 

AFNetworking是一个讨人喜欢的网络库,适用于iOS以及Mac OS X. 它构建于在​​NSURLConnection​​​, ​​NSOperation​​, 以及其他熟悉的Foundation技术之上. 它拥有良好的架构,丰富的api,以及模块化构建方式,使得使用起来非常轻松.例如,他可以使用很轻松的方式从一个url来得到json数据:

 

1

NSURL *url = [NSURL URLWithString:@"http://api.twitter.com/1/statuses/public_timeline.json"];

2

NSURLRequest *request = [NSURLRequest requestWithURL:url];

3

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {

4

NSLog(@"Public Timeline: %@", JSON);

5

} failure:nil];

6

[operation start];

 

如何开始使用

  • ​​下载 AFNetworking​​ 然后尝试使用里面的例子
  • 阅读​​“Getting Started” guide​​​,​​FAQ​​​, 或者​​other articles in the wiki​​
  • 查看​​ 完整的文档​​
  • 查看​​NSScreencast episode about AFNetworking​​ 来得到一个快速的参考,以快速的应用到你的app中
  • 有问题?​​Stack Overflow​​ 是最好的地方来找到答案

综述

CORE:

​​AFURLConnectionOperation​​:一个 NSOperation 实现了NSURLConnection

HTTP Requests:

​​AFHTTPRequestOperation​​:AFURLConnectionOperation的子类,当request使用的协议为HTTP和HTTPS时,它压缩了用于决定request是否成功的状态码和内容类型.

​​AFJSONRequestOperation​​:AFHTTPRequestOperation的一个子类,用于下载和处理jason response数据.

​​AFXMLRequestOperation​​:AFHTTPRequestOperation的一个子类,用于下载和处理xml response数据.

​​AFPropertyListRequestOperation​​​:AFHTTPRequestOperation的一个子类,用于下载和处理​​property list​​ response数据.

HTTP CLIENT:

​​AFHTTPClient​​:捕获一个基于http协议的网络应用程序的公共交流模式.包含:

  • 使用基本的url相关路径来只做request
  • 为request自动添加设置http headers.
  • 使用http 基础证书或者OAuth来验证request
  • 为由client制作的requests管理一个NSOperationQueue
  • 从NSDictionary生成一个查询字符串或http bodies.
  • 从request中构建多部件
  • 自动的解析http response数据为相应的表现数据
  • 在网络可达性测试用监控和响应变化.

IMAGES

​​AFImageRequestOperation​​:一个AFHTTPRequestOperation的子类,用于下载和处理图片.

​​UIImageView+AFNetworking​​:添加一些方法到UIImageView中,为了从一个URL中异步加载远程图片

例子程序

XML REQUEST

 

1

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://api.flickr.com/services/rest/?method=flickr.groups.browse&api_key=b6300e17ad3c506e706cb0072175d047&cat_id=34427469792%40N01&format=rest"]];

2

AFXMLRequestOperation *operation = [AFXMLRequestOperation XMLParserRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser) {

3

XMLParser.delegate = self;

4

[XMLParser parse];

5

} failure:nil];

6

[operation start];

 

IMAGE REQUEST

 

1

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 100.0f, 100.0f)];

2

[imageView setImageWithURL:[NSURL URLWithString:@"http://i.imgur.com/r4uwx.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder-avatar"]];

 

API CLIENT REQUEST

 

1

// AFGowallaAPIClient is a subclass of AFHTTPClient, which defines the base URL and default HTTP headers for NSURLRequests it creates

2

[[AFGowallaAPIClient sharedClient] getPath:@"/spots/9223" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {

3

NSLog(@"Name: %@", [responseObject valueForKeyPath:@"name"]);

4

NSLog(@"Address: %@", [responseObject valueForKeyPath:@"address.street_address"]);

5

} failure:nil];

 

FILE UPLOAD WITH PROGRESS CALLBACK

 

01

NSURL *url = [NSURL URLWithString:@"http://api-base-url.com"];

02

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];

03

NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"avatar.jpg"], 0.5);

04

NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"/upload" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {

05

[formData appendPartWithFileData:imageData name:@"avatar" fileName:@"avatar.jpg" mimeType:@"image/jpeg"];

06

}];

07

08

AFHTTPRequestOperation *operation = [[[AFHTTPRequestOperation alloc] initWithRequest:request] autorelease];

09

[operation setUploadProgressBlock:^(NSInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {

10

NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);

11

}];

12

[operation start];

 

STREAMING REQUEST

 

1

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://localhost:8080/encode"]];

2

3

AFHTTPRequestOperation *operation = [[[AFHTTPRequestOperation alloc] initWithRequest:request] autorelease];

4

operation.inputStream = [NSInputStream inputStreamWithFileAtPath:[[NSBundle mainBundle] pathForResource:@"large-image" ofType:@"tiff"]];

5

operation.outputStream = [NSOutputStream outputStreamToMemory];

6

[operation start];

 

  • 上一篇​​ios支付宝客户端应用开发指南​​
  • 下一篇​​一个面试官眼里的校园招聘——写给求职心切的应届毕业生​​



举报

相关推荐

0 条评论