AFNetworking简单用法

GET请求

 1 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
 2
 3 [manager GET:URL parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
 4
 5 }
 6  success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
 7
 8  NSLog(@"这里打印请求成功要做的事");
 9
10 }
11
12 failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull   error) {
13
14 NSLog(@"%@",error);  //这里打印错误信息
15
16 }];

POST 请求

 1 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
 2
 3
 4 NSMutableDictionary *parameters = @{@"":@"",@"":@""};
 5
 6 [manager POST:URL parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) {
 7
 8
 9 } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
10
11
12 } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
13
14 }];

下载

 1 //1.创建管理者对象
 2     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
 3     //2.确定请求的URL地址
 4     NSURL *url = [NSURL URLWithString:@""];
 5
 6     //3.创建请求对象
 7     NSURLRequest *request = [NSURLRequest requestWithURL:url];
 8
 9     //下载任务
10     NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
11         //打印下下载进度
12         NSLog(@"%lf",1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount);
13
14     } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
15         //下载地址
16         NSLog(@"默认下载地址:%@",targetPath);
17
18         //设置下载路径,通过沙盒获取缓存地址,最后返回NSURL对象
19         NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];
20         return [NSURL URLWithString:filePath];
21
22
23     } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
24
25         //下载完成调用的方法
26         NSLog(@"下载完成:");
27         NSLog(@"%@--%@",response,filePath);
28
29     }];
30
31     //开始启动任务
32     [task resume];

上传

第一种方法是通过工程中的文件进行上传
 1 //1.创建管理者对象
 2     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
 3
 4     //2.上传文件
 5     NSDictionary *dict = @{@"username":@"1234"};
 6
 7     NSString *urlString = @"22222";
 8     [manager POST:urlString parameters:dict constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
 9         //上传文件参数
10         UIImage *iamge = [UIImage imageNamed:@"123.png"];
11         NSData *data = UIImagePNGRepresentation(iamge);
12         //这个就是参数
13         [formData appendPartWithFileData:data name:@"file" fileName:@"123.png" mimeType:@"image/png"];
14
15     } progress:^(NSProgress * _Nonnull uploadProgress) {
16
17         //打印下上传进度
18         NSLog(@"%lf",1.0 *uploadProgress.completedUnitCount / uploadProgress.totalUnitCount);
19     } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
20
21         //请求成功
22         NSLog(@"请求成功:%@",responseObject);
23
24     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
25
26         //请求失败
27         NSLog(@"请求失败:%@",error);
28     }];
第二种是通过URL来获取路径,进入沙盒或者系统相册等等
 1 //1.创建管理者对象
 2     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
 3     //2.上传文件
 4     NSDictionary *dict = @{@"username":@"1234"};
 5
 6     NSString *urlString = @"22222";
 7     [manager POST:urlString parameters:dict constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
 8
 9         [formData appendPartWithFileURL:[NSURL fileURLWithPath:@"文件地址"] name:@"file" fileName:@"1234.png" mimeType:@"application/octet-stream" error:nil];
10     } progress:^(NSProgress * _Nonnull uploadProgress) {
11
12         //打印下上传进度
13         NSLog(@"%lf",1.0 *uploadProgress.completedUnitCount / uploadProgress.totalUnitCount);
14     } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
15
16         //请求成功
17         NSLog(@"请求成功:%@",responseObject);
18
19     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
20
21         //请求失败
22         NSLog(@"请求失败:%@",error);
23     }];

监测当前网络状态(网络监听)

1 {
2     // 进行网络监测判断的BOOL值
3     BOOL isOpen;
4 }
 1 if (!isOpen) {
 2
 3     // 打开网络监测的方法
 4     [[AFNetworkReachabilityManager sharedManager] startMonitoring];
 5     isOpen = YES;
 6
 7 } else {
 8
 9     // 关闭网络监测
10     [[AFNetworkReachabilityManager sharedManager] stopMonitoring];
11     isOpen = NO;
12 }
13
14 // 接下来会判断是WiFi状态,还是3g或4g状态,还有网络不可用状态
15 [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
16
17     switch (status) {
18         case AFNetworkReachabilityStatusUnknown:
19             NSLog(@"未知状态");
20             break;
21
22         case AFNetworkReachabilityStatusNotReachable:
23             NSLog(@"未连接状态");
24             break;
25
26         case AFNetworkReachabilityStatusReachableViaWWAN:
27             NSLog(@"手机流量网络");
28             break;
29
30         case AFNetworkReachabilityStatusReachableViaWiFi:
31             NSLog(@"WiFi状态");
32             break;
33
34         default:
35             break;
36     }
37 }];
 
时间: 2024-10-11 01:11:11

AFNetworking简单用法的相关文章

iOS block-base 动画简单用法+关键帧动画设置线性变化速度的问题

本文转载至 http://www.tuicool.com/articles/aANBF3m 时间 2014-12-07 20:13:37  segmentfault-博客原文  http://segmentfault.com/blog/alan/1190000002411296 iOS的各种动画相漂亮,相信这是吸引很多人买iPhone的原因之一.不仅如此,这还是吸引我做iOS开发的一大原因,因为在iOS上给界面实现一些像样的动画实在是太轻松了! 这里就介绍一下iOS的block-based an

Android WIFI 简单用法

随着Wifi的普及,在开发App的时候对wifi的考虑越来越多了.例如程序的升级在wifi下可以省很多流量,在通信软件中的视频通话.可以实现高画质的传输等等,Android提供了WifiManager类来帮助开发者们管理Wifi.下面就简单来说一下WifiManager的简单用法把. 权限: 为了使用WfiManager 我们需要在Androidmanifest.xml 加入权限: //本例中使用了前两个.具体请按照需要添加权限. <uses-permission android:name=&quo

Android中资源文件中的字符串数组string-array简单用法

在Android中,用string-array是一种简单的提取XML资源文件数据的方法. 例子如下: 把相应的数据放到values文件夹的strings.xml文件里,或是其他自定义的xml中都可以,以下操作方法相同. <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="sports"> <item>足球<

expect简单用法

1 #!/usr/expect/bin/expect -f 2 3 4 set loginuser [lrange $argv 0 0] 5 set loginpass [lrange $argv 1 1] 6 set ipaddr [lrange $argv 2 2] 7 set port [lrange $argv 3 3] 8 set timeout [lrange $argv 4 4] 9 set from [lrange $argv 5 5] 10 set to [lrange $ar

Tcpdump 的简单用法

Tcpdump 的简单用法 tcpdump是Linux命令行下使用最广泛的网络分析工具,运行的时候会将网卡运行在混杂模式下,需要root权限才能执行 下面是几个比较常见的参数: -w  保持到指定的文件 -i  指定监听的网卡,缺省显示第一块网卡 -nn 以IP方式显示host -v  显示详细信息 -s  指定数据包大小,缺省是65535 -t  不显示时间 ,缺省是显示时间戳 -c  获取数据包数量,缺省不限制,需要用Ctrl+c来终止 下面是关于命令关键字的说明 1.主要包括host,ne

C++ double转string类型以及MFC控件简单用法

这两天项目需要,测试c++库里面内容.生成jar再给Android调用.我没有学过C++,现在开始记录C++简单用法.测试时候一般都是使用mfc程序来测试,要输入值,显示结果吗.我用的编译环境vs2008. 一.double 转string #include <string> CString strResultx; strResultx.Format(_T("x:%.4f\n"), 89.7887878); 转换结果还是放在strResultx 2.两个字符串相连 CStr

vB SendMessage API 简单用法

vB SendMessage API 简单用法 1. 在Windows编程中,向文本框控件.列表控件.按钮控件等是我们最常接触的控件了.但是在VB中这些控件有时无法实现我们的需要.在这时,我们只要简单的利用Windows API函数就可以扩充这些控件的功能了.顾名思义,SendMessage函数就是向窗口(这里的窗口指的是向按钮.列表框.编辑框等具有hWnd属性的控件)发送消息的函数,该函数的定义如下:Declare Function SendMessage Lib "user32"

java中Object.equals()简单用法

/* equals()方法默认的比较两个对象的引用! */ class Child { int num; public Child(int x){ num = x; } //人文的抛出运行时异常的好处是:可以自定义错误信息! /*public boolean equals(Object o) throws ClassCastException{ if(!(o instanceof Child)) throw new ClassCastException("中文提示:类型错误"); Ch

UIDatePicker的简单用法

// 初始化UIDatePickerUIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 200, 320, 216)];// 设置时区[datePicker setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];// 设置当前显示时间[datePicker setDate:tempDate animated:YES];// 设置显示最大时间