#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的更多相关文章

  1. iOS 第三方框架-SDWebImage

    iOS中著名的牛逼的网络图片处理框架.包含的功能:图片下载.图片缓存.下载进度监听.gif处理等等.用法极其简单,功能十分强大,大大提高了网络图片的处理效率.国内超过90%的iOS项目都有它的影子. ...

  2. iOS:第三方框架MJPhotoBrowser图片浏览器的使用

    介绍:MJPhotoBrowser这个第三方库是MJ老师封装的一套用来浏览图片的浏览器,可是是本地图片.网络图片.gif图片等,其也依赖了SDWebImage.SVProgressHUD.YLGIFI ...

  3. iOS 第三方框架-Masonry

    介绍地址:http://www.cocoachina.com/ios/20141219/10702.html 官网:https://github.com/SnapKit/Masonry 记住:一定要先 ...

  4. iOS 第三方框架-MJRefresh

    MJRefresh是一款非常好用的上拉下拉第三方库,使用也很简单.github地址: https://github.com/CoderMJLee/MJRefresh . 下拉刷新 官方给过来的例子很简 ...

  5. iOS 第三方框架-MJExtension

    1.数组转换成模型数组 // 将 "微博字典"数组 转为 "微博模型"数组 NSArray *newStatuses = [HWStatus objectArr ...

  6. iOS 第三方框架-MBProgressHUD

    MBProgressHUD提示框官网地址:https://github.com/jdg/MBProgressHUD 官网里已经提供了足够多的例子供我们使用,但在实现开发中,我们用到的只是其中的一小部分 ...

  7. iOS第三方Api及常用框架总结

    iOS常用框架汇总: SVProgressHUD:产生覆盖层,禁止某种操作 SDWebImage: 专业下载图片框架 AFN:网络数据请求框架 MJExtension,模型对象之间互转 第三方分享第三 ...

  8. iOS开发常用的第三方框架

    1. AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目.AFNetworking是一个轻量级的iOS.Mac OS X网络通信类库,现在是G ...

  9. iOS开发之常用第三方框架(下载地址,使用方法,总结)

    iOS开发之常用第三方框架(下载地址,使用方法,总结) 说句实话,自学了这么久iOS,如果说我不知道的但是又基本上都摸遍了iOS相关知识,但是每次做项目的时候,遇到难一点的地方或者没试过的东西就闷了. ...

随机推荐

  1. 获取和设置localStorage

    东钿金融服务平台 用户第一次访问页面出现,引导步骤,起初一直使用cookie,但是cookie一直不稳定 今天老大说改用localStorage 于是乎百度,查了一篇博客 http://www.cnb ...

  2. 利用花生壳和IIS发布网页过程

    老早利用做过类似的事情,但最近又忘了怎么弄的了,还是自己给自己总结下,省得以后到处找了. [动态域名绑定] 如果具有公网IP地址,申请一个免费的花生壳动态域名,再下一个花生壳客户,使用已经申请好的动态 ...

  3. JobScheduler

    任务写在JobService中 public class TestJobService extends JobService { private static final String TAG = & ...

  4. 单步运行linux kernel ?

    如果能给linux kernel打log,如果能单步运行,如果能像普通应用程序那样,step by step的查看程序跑哪里了.. 该多好?这是一个梦想,但从未实现过:因为那是kernel,不是应用程 ...

  5. Scrum Planning Card

    最近用Swift写了个小工具Scrum Planning Card,如果你也用scrum管理项目, 或许用这个工具可以提高你的工作效率. 另外欢迎提建议和反馈,谢谢. 欢迎关注我的微信公众号 Hope ...

  6. Response.Redirect 打开新窗体的两种方法

    普通情况下,Response.Redirect 方法是在server端进行转向,因此,除非使用 Response.Write("<script>window.location=' ...

  7. Android 获取控件相对于屏幕位置

    // View宽,高 public int[] getLocation(View v) { int[] loc = new int[4]; int[] location = new int[2]; v ...

  8. Codeforces Round #290 (Div. 2) C. Fox And Names dfs

    C. Fox And Names 题目连接: http://codeforces.com/contest/510/problem/C Description Fox Ciel is going to ...

  9. cdoj 80 Cube 水题

    Cube Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/80 Descrip ...

  10. Codeforces Round #307 (Div. 2) E. GukiZ and GukiZiana 分块

    E. GukiZ and GukiZiana Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/55 ...