`
lizhuang
  • 浏览: 904064 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

AFNetwork作用和用法

ios 
阅读更多
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 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
#import

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@N01&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 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 封装

    AFNetwork 是 iOS 开发中广泛使用的网络请求库,它基于苹果的 Foundation 框架,提供了高效的网络请求处理和数据解析功能。这个压缩包文件"AFNetwork封装"很可能包含了一系列有关如何在实际项目中有效利用 AFNetwork...

    AFNetwork 网络访问

    - POST请求与GET类似,只是使用`POST`方法:`[manager POST:@"path" parameters:params success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { ... } failure:^(NSURLSessionDataTask *...

    AFNetwork简单应用

    本篇文章将深入探讨AFNetworking的基本使用方法,包括初始化、发送网络请求以及处理响应数据,以"AFNetwork简单应用"为例。 ### 一、AFNetworking简介 AFNetworking由AFNetworking和AFSecurityPolicy两部分组成,...

    swift-afnetwork 网络请求的实现

    6. **使用AFNetworking进行网络请求**: AFNetworking提供了多种网络请求方法,包括GET、POST等。下面是一个简单的GET请求示例: ```swift let manager = AFHTTPSessionManager() manager.requestSerializer = ...

    AFNetwork封装

    AFNetworking是一个强大的开源库,专为iOS和OS X平台设计,用于处理网络请求。本篇文章将详细探讨AFNetworking的封装技巧,帮助开发者更高效、便捷地使用这个库。 首先,我们要了解AFNetworking的核心组件。...

    ios-一行代码封装所有AFNetwork请求,并以URL缓存.zip

    对于AFNetwork http请求所有方法的封装,同时增加了YYCache的缓存策略缓存URL的返回(post上传方法均不缓存 一行代码,只需设置url,必要参数,成功的...详细使用方法请参考.h文件,好用请给star,不好用欢迎提建议~

    AFNetWork断点下载

    通过调用`downloadTaskWithRequest:`方法并传递合适的请求参数,可以创建一个支持断点续传的下载任务。 4. **NSProgress**: 这是iOS中的一个类,用于跟踪任务的进度。AFNetworking会自动将下载进度包装成`...

    AFNetwork发送GET/POST请求

    你需要配置Action,定义接收和返回的参数,然后在Action的execute方法中处理业务逻辑,最后使用JSONResult或自定义Result类型来返回JSON格式的响应。 通过这个教程,你应该能够使用AFNetworking发起GET和POST请求,...

    ios-网络请求管理库,基于对AFNetwork的封装.zip

    本资源“ios-网络请求管理库,基于对AFNetwork的封装.zip”提供了一个针对AFNetworking的封装,旨在简化网络请求的管理和执行,提高开发效率。下面将详细介绍这个网络请求管理库的主要功能和用法。 **AFNetworking...

    AFNetWorking3.0

    本篇将深入探讨AFNetworking 3.0的核心特性、使用方法以及在实际项目中的应用。 一、AFNetworking 3.0核心特性 1. **Swift支持**:AFNetworking 3.0开始支持Swift语言,提供了Swift的API,使得Swift开发者也能轻松...

    AFNetworking (可以上传图片)

    你可以使用 `setUploadProgressBlock:` 方法设置进度回调,以便在上传过程中更新 UI。 2. **AFHTTPSessionManager**:在 AFNetworking 3.x 及更高版本中,`AFHTTPRequestOperationManager` 被替换为 `...

    ios-HJNetwork网络请求 支持RESTful方式请求和数据缓存.zip

    拥有 AFNetwork 大部分常用功能,包括网络状态监听等,提供类方法和实例方法调用。 非常好的扩展性,开放出了YYCache和AFNetwork的实例对象,更便于满足各种不同需求。 支持多种缓存策略。

    AFNetworking第三方网络数据请求类-iOS开发必备

    对于文件上传,可以使用`-[AFHTTPSessionManager uploadTaskWithRequest:fromFile:progress:completionHandler:]`方法,而对于大文件下载,推荐使用`-[AFURLSessionManager downloadTaskWithRequest:progress:...

    AFNetworking4.0+封装

    通过设置适当的缓存策略,例如`NSURLRequestUseProtocolCachePolicy`,可以让AFNetworking根据HTTP协议头中的Cache-Control和Expires字段决定是否使用缓存。此外,还可以自定义缓存策略,实现更为精细化的控制。 ...

    ios-HJNetwork网络请求 支持RESTful方式请求和多种数据缓存.zip

    HJNetwork 对 ...拥有 AFNetwork 大部分常用功能,包括网络状态监听等,提供类方法和实例方法调用。 非常好的扩展性,开放出了YYCache和AFNetwork的实例对象,更便于满足各种不同需求。 支持多种缓存策略。

    iOS 使用AFN上传视频到服务器示例代码

    首先创建一个`AFHTTPRequestOperationManager`实例,设置请求头和参数,然后使用`uploadHTTPRequestOperationWithRequest:fromFile:progress:completionHandler:`方法上传文件: ```swift let manager = ...

    NHRequest:这是发出POST,PUT,GET和DELETE之类的HTTP请求的简单方法

    要将NHRequest添加到您的项目,Podfile中必须包含以下几行: platform :ios , '7.0'pod "NHRequest" , "~> 1.0.1"不使用CocoaPods进行安装将AFNetwork添加到您的项目中导入“ NHRequest.h”, #import "NHRequest.h...

    iOS歌词同步与解析

    3. **数据源方法**:在`UITableViewDataSource`协议中,我们需要实现`numberOfRowsInSection`和`cellForRowAt`方法。前者返回歌词数量,后者负责根据索引路径创建并配置`UITableViewCell`。 4. **自定义`...

    IOS实现简易天气预报功能适合初学者

    在这个案例中,我们使用Objective-C,一种面向对象的编程语言,它与C和C++语法兼容,广泛应用于iOS和Mac OS X平台。 其次,我们要引入AFNetworking库,这是iOS中最常用的一个网络请求库,用于发送HTTP请求获取天气...

Global site tag (gtag.js) - Google Analytics