AFNetwork是一个轻量级的网络请求api类库。是以NSURLConnection, NSOperation和其他方法为基础的。

下面这个例子是用来处理json请求的:
NSURL *url = [NSURL URLWithString:@"https://alpha-api.app.net/stream/0/posts/stream/global"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
    NSLog(@"App.net Global Stream: %@", JSON);
} failure:nil];
[operation start];

使用方法:
1.下载AFNetwork, 点击下载
2.将文件夹名称为AFNetworking拖入到你的工程项目即可

常见问题:
1.  AFNetworking作用都有哪些?
NSURLConnection提供了+sendAsynchronousRequest:queue:completionHandler:和+sendAsynchronousRequest:queue:completionHandler: ,但是AFNetworking提供了更好的功能
*AFURLConnectionOperation和它的子类继承NSOperation的,允许请求被取消,暂停/恢复和由NSOperationQueue进行管理。
*AFURLConnectionOperation也可以让你轻松得完成上传和下载,处理验证,监控上传和下载进度,控制的缓存。
*AFHTTPRequestOperation和它得子类可以基于http状态和 内容列下来区分是否成功请求了
*AFNetworking可以将远程媒体数据类型(NSData)转化为可用的格式,比如如JSON,XML,图像和plist。
*AFHTTPClient提供了一个方便的网络交互接口,包括默认头,身份验证,是否连接到网络,批量处理操作,查询字符串参数序列化,已经多种表单请求
*的UIImageView+ AFNetworking增加了一个方便的方法来异步加载图像。

2. AFNetworking是否支持缓存?
可以,NSURLCache及其子类提供了很多高级接口用于处理缓存
如果你想将缓存存储再磁盘,推荐使用SDURLCache

3.如何使用AFNetworking上传一个文件?
NSData *imageData = UIImagePNGRepresentation(image);
NSURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:@"/upload" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData> formData) {
  [formData appendPartWithFileData:imageData mimeType:@"image/png" name:@"avatar"];
}];

4.如何使用AFNetworking下载一个文件?
先创建一个 AFURLConnectionOperation对象,然后再使用它的属性 outputStream进行处理
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:@"download.zip" append:NO];

5.如何解决:SystemConfiguration framework not found in project
请导入:
#import <SystemConfiguration/SystemConfiguration.h>
#import <MobileCoreServices/MobileCoreServices.h>

6.当应用程序退出时,如何保持持续的请求?
AFURLConnectionOperation有一个叫 setShouldExecuteAsBackgroundTaskWithExpirationHandler:的方法用于处理在应用程序进入后台后,进行持续的请求
[self setShouldExecuteAsBackgroundTaskWithExpirationHandler:^{
}];

一些实例:
1.XML 请求
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"]];
AFXMLRequestOperation *operation = [AFXMLRequestOperation XMLParserRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser) {
  XMLParser.delegate = self;
  [XMLParser parse];
} failure:nil];
[operation start];

2.图片请求:
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 100.0f, 100.0f)];
[imageView setImageWithURL:[NSURL URLWithString:@"http://i.imgur.com/r4uwx.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder-avatar"]];

3.图片上传处理,监测上传状态:
didiwei  17:28:57
NSURL *url = [NSURL URLWithString:@"http://api-base-url.com"];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"avatar.jpg"], 0.5);
NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"/upload" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
    [formData appendPartWithFileData:imageData name:@"avatar" fileName:@"avatar.jpg" mimeType:@"image/jpeg"];
}];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
    NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
}];
[operation start];

4.在线流媒体请求
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://localhost:8080/encode"]];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.inputStream = [NSInputStream inputStreamWithFileAtPath:[[NSBundle mainBundle] pathForResource:@"large-image" ofType:@"tiff"]];
operation.outputStream = [NSOutputStream outputStreamToMemory];
[operation start];

AFNetwork作用和用法详解相关推荐

  1. AFNetwork 作用和用法详解

    转自:http://www.maxiaoguo.com/clothes/269.html AFNetworking是一个轻量级的iOS网络通信类库.它建立在NSURLConnection和NSOper ...

  2. shadow dom的作用和用法详解(createShadowRoot, attachShadow)

    相信shadow dom很多前端开发工作者都遇到过,它是web component的一部分.不过对于shadow dom很多人并不深入了解,只晓得是影子dom结构,那么到底什么是shadow dom的 ...

  3. MySQL索引作用和用法详解

    一.引言 对于该文章,照例尽量通俗的写,并注明一些细节和可能出现问题的地方. 此外,该文章只是写了索引的创建,不代表检索(查询)的应用,检索后面会写道. 标注:红色表示十分重要,蓝色表示细节: 在阅读 ...

  4. DOCTYPE声明作用及用法详解

    一.浏览器呈现模式和doctype 有的网页是遵循标准而创作的,但也有很多不是.即使你不能创建遵循标准的网页,也希望浏览器根据标准来正确显示那些页.目前,大量网页充斥着大量非标准代码,它们仍能正常地工 ...

  5. description在PHP中作用,html元素meta标签name=“description”属性作用及用法详解

    在html元素meta标签中的属性name="description"的用法: content属性值是网页描述文字,尽量用简洁的文字描述该网页的主要内容,一般控制在60字以内. 下 ...

  6. Java中static作用及用法详解

    1.1概述: static是静态修饰符,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存 ...

  7. Java中static变量作用和用法详解

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

  8. VLAN的作用及用法详解_01

    一.冲突域 1.什么是冲突域 1)在一个网络范围内发送数据时会产生冲突的区域就是冲突域 2)冲突是以太网致命故障,导致信号冲突,数据损坏.丢失.数据传输慢 3)什么样的数据会产生冲突呢? 物理层的电信 ...

  9. x-requested-with的作用以及用法详解

    x-requested-with 请求头 区分ajax请求还是普通请求 在服务器端判断request来自Ajax请求(异步)还是传统请求(同步): 两种请求在请求的Header不同,Ajax 异步请求 ...

最新文章

  1. 最值得一看的几条简单的谷歌 Google 搜索技巧!
  2. php排字符串的高低位怎么区分,PHP-根据字符串和所用字体计算字符串所占宽高...
  3. 微型计算机电源的选购应注意哪些问题,购买小功率ups电源的注意事项
  4. 加拿大大学 计算机专业排名2015,加拿大大学计算机专业排名top15
  5. Android fb0 截屏实现
  6. hibernate二级缓存(一)一级缓存与二级缓存
  7. matlab半波整流怎么做,基于Matlab的单相半波可控整流电路的设计与仿真.doc
  8. 添加打印机,本地打印后台处理程序服务没有运行
  9. Element UI 之 Tabs 栏下拉菜单的实现
  10. 计算机科学中的数学第一章答案,翻译《计算机科学与数学》第一章第四节:我们的公理...
  11. ajax浏览器崩溃,AJAX崩溃浏览器(200MB响应)
  12. 图像预处理库CV-CUDA开源了,打破预处理瓶颈,提升推理吞吐量20多倍
  13. 以太网实习_计算机网络实习心得体会
  14. Window Server 2008虚拟机安装
  15. 开闭原则(Open Closed Principle)
  16. zoj3380 Patchouli's Spell Cards
  17. 开课吧T31项目第8天
  18. 世上无难事,只怕有心人
  19. Part 3 对象的组合
  20. 大环套小环、小环围着大环转!

热门文章

  1. outlook反应慢的原因_环氧漆不固化是什么原因?固化剂的使用有关系!
  2. java workerdone_【架构】Java并发编程——线程池的使用
  3. click事件在什么时候出发_超全的js事件机制amp;事件委托
  4. python如何实现办公自动化培训_基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)...
  5. Educational Codeforces Round 37 G. List Of Integers (二分,容斥定律,数论)
  6. windows下连接smb服务器
  7. Android核心程序之SystemUI - (一)开篇
  8. SVN本地代码未提交而被覆盖
  9. laravel静态资源
  10. CSS方式支持IE6的fixed样式