iOS - 第三方框架 - AFN
#5、AFNetworking 2.6使用方法
>2.6版本 支持 iOS7以上,而且支持NSURLConnectionOperation
>3.0版本 支持 iOS7以上 NSURLConnectionOperation被废弃了
```
//获取网络请求管理器
AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager];
```
###1) 执行get请求
```
//GET 请求地址
//parameters 请求参数
//success 请求成功的回调方法
//failure 请求失败的回调方法
//responseObject 返回请求成功获得的数据
//AFN 可以帮我们自动解析json
```
###2)执行get请求2
```
// parameters 一般是字典
NSDictionary * params = @{@"username":@"haha",@"password":@“123"};
AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager];
[manager GET:@"http://192.168.1.200/login.php" parameters:params success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) {
NSLog(@"%@",responseObject);
} failure:^(AFHTTPRequestOperation * _Nonnull operation, NSError * _Nonnull error) {
NSLog(@"%@",error);
}];
*将GET 改为POST 则为执行POST请求*
```
###3)解析xml
```
AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
//改成AFXMLParserResponseSerializer 格式
manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
//设置可以响应的类型
// manager.responseSerializer.acceptableContentTypes
[manager GET:@"http://192.168.1.2/train.xml" parameters:nil success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) {
NSLog(@"%@",responseObject);
} failure:^(AFHTTPRequestOperation * _Nonnull operation, NSError * _Nonnull error) {
NSLog(@"%@",error);
}];
```
###4)上传data
```
POST 上传地址
parameters 文本参数
constructingBodyWithBlock 上传文件的block,有可能多次调用
success 上传成功
failure 上传失败
[manager POST:@"http://192.168.1.200/post/upload.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
formData 上传的数据
FileData 上传文件的data
name 上传文件的key
FileURL 本地路径
fileName 服务器上的名字
mimeType 上传资源的类型
NSURL * url = [[NSBundle mainBundle] URLForResource:@"111.png" withExtension:nil];
//上传文件
[formData appendPartWithFileURL:url name:@"userfile00" fileName:@"2016030211459.png" mimeType:@"image/png" error:NULL];
//上传data
[formData appendPartWithFileData:data name:@"userfile00" fileName:@"123" mimeType:@"image/png"];
} success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) {
NSLog(@"%@",responseObject);
} failure:^(AFHTTPRequestOperation * _Nonnull operation, NSError * _Nonnull error) {
NSLog(@"%@",error);
}];
```
#6、AFNetworking 3.0使用方法
###1、AFNetworking3.0 和AFNetworking2.6的部分区别
>3.0版本删除了所有的 NSURLConnection 方法
>并将所有的AFHTTPRequestOperationManager 改为 AFHTTPSessionManager
>AFHTTPSessionManager * manager1 = [AFHTTPSessionManager manager];
>AFURLSessionManager *manager2 = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
>AFURLSessionManager ≈ NSURLSession
设置manager2的同时需要设置NSURLSessionConfiguration
###2、具体方法
#####1)监测网络
```
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog(@"Reachability: %@“,AFStringFromNetworkReachabilityStatus(status));
}];
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
```
#####2)上传文件
```
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://192.168.1.200/post/upload.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
{
[formData appendPartWithFileURL:[[NSBundle mainBundle] URLForResource:@"111.png" withExtension:nil] name:@"userfile00" fileName:@"filename.jpg" mimeType:@"image/jpeg" error:nil];
} error:nil];
NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:nil completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
if (error) {
NSLog(@"Error: %@", error);
} else {
NSLog(@"%@ %@", response, responseObject);
}
}];
[uploadTask resume];
```
#####3)下载文件
```
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSURL *URL = [NSURL URLWithString:[@"http://192.168.1.2/demo.json" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
//下载地址
NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
NSLog(@"%@",[documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]]);
return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
}
completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error)
{
NSLog(@"File downloaded to: %@", filePath);
}];
//filePath == [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]
[downloadTask resume];
```
iOS - 第三方框架 - AFN的更多相关文章
- iOS 第三方框架-SDWebImage
iOS中著名的牛逼的网络图片处理框架.包含的功能:图片下载.图片缓存.下载进度监听.gif处理等等.用法极其简单,功能十分强大,大大提高了网络图片的处理效率.国内超过90%的iOS项目都有它的影子. ...
- iOS:第三方框架MJPhotoBrowser图片浏览器的使用
介绍:MJPhotoBrowser这个第三方库是MJ老师封装的一套用来浏览图片的浏览器,可是是本地图片.网络图片.gif图片等,其也依赖了SDWebImage.SVProgressHUD.YLGIFI ...
- iOS 第三方框架-Masonry
介绍地址:http://www.cocoachina.com/ios/20141219/10702.html 官网:https://github.com/SnapKit/Masonry 记住:一定要先 ...
- iOS 第三方框架-MJRefresh
MJRefresh是一款非常好用的上拉下拉第三方库,使用也很简单.github地址: https://github.com/CoderMJLee/MJRefresh . 下拉刷新 官方给过来的例子很简 ...
- iOS 第三方框架-MJExtension
1.数组转换成模型数组 // 将 "微博字典"数组 转为 "微博模型"数组 NSArray *newStatuses = [HWStatus objectArr ...
- iOS 第三方框架-MBProgressHUD
MBProgressHUD提示框官网地址:https://github.com/jdg/MBProgressHUD 官网里已经提供了足够多的例子供我们使用,但在实现开发中,我们用到的只是其中的一小部分 ...
- iOS第三方Api及常用框架总结
iOS常用框架汇总: SVProgressHUD:产生覆盖层,禁止某种操作 SDWebImage: 专业下载图片框架 AFN:网络数据请求框架 MJExtension,模型对象之间互转 第三方分享第三 ...
- iOS开发常用的第三方框架
1. AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目.AFNetworking是一个轻量级的iOS.Mac OS X网络通信类库,现在是G ...
- iOS开发之常用第三方框架(下载地址,使用方法,总结)
iOS开发之常用第三方框架(下载地址,使用方法,总结) 说句实话,自学了这么久iOS,如果说我不知道的但是又基本上都摸遍了iOS相关知识,但是每次做项目的时候,遇到难一点的地方或者没试过的东西就闷了. ...
随机推荐
- Linux查看系统信息命令总结
系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinf ...
- hdoj 5288 OO’s Sequence
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5288 //*************头文件区************* #include<ios ...
- websocket的php测试demo
<?php class WS { var $master; var $sockets = array(); var $debug = false; var $handshake = false; ...
- C#调用存储过程详解
连接字符串: string conn = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].C ...
- 解决window8 下连接PLSQL 报ora-12154错误
操作系统版本:window8 64位企业版 数据库:oracle10g2 安装PLSQL,登录PLSQL报ORA-12154错误. 首先:所以需要下载一个32位客户端,我同时也下载了64位客户端,具体 ...
- 动态调用WebService(C#)
通常我们在程序中需要调用WebService时,都是通过“添加Web引用”,让VS.NET环境来为我们生成服务代理,然后调用对应的Web服务.这样是使工作简单了,但是却和提供Web服务的URL.方法名 ...
- jQuery each,避免使用js for循环
What is the difference between $.each(selector) and $(selector).each(): http://stackoverflow.com/que ...
- javaScript-原型、继承-01
为什么会有原型这个概念: 1.优雅的创建对象: 2.继承: 先看js 之前创建对象的方式存在的问题: 创建对象方式 1.字面量 var obj={name:"join",age:1 ...
- MFC 学习 之 工具栏的添加(一)
最终实现的效果图: 步骤一:接下来在资源视图中添加一个ToolBar工具栏(具体怎么添加在这儿就不详细讲解了!)添加后的ToolBar以及工具栏中每个按钮 所命名的ID如下:(可以自定义,只要不重名就 ...
- How to Use a Function or a Procedure as a Parameter in another Function
http://delphi.about.com/od/adptips2006/qt/functionasparam.htm In Delphi, procedural types (method po ...