AFNetworking2.5使用2
链接地址:http://blog.csdn.net/abc4715760/article/details/46521111
官网下载2.5版本:http://afnetworking.com/
此文章是基于AFNetworking2.5版本的,需要看AFNetworking2.0版本的请看上一篇文章:AFNetworking2.0使用
1.检测网络状态
- + (void)netWorkStatus
- {
- /**
- AFNetworkReachabilityStatusUnknown = -1, // 未知
- AFNetworkReachabilityStatusNotReachable = 0, // 无连接
- AFNetworkReachabilityStatusReachableViaWWAN = 1, // 3G 花钱
- AFNetworkReachabilityStatusReachableViaWiFi = 2, // WiFi
- */
- // 如果要检测网络状态的变化,必须用检测管理器的单例的startMonitoring
- [[AFNetworkReachabilityManager sharedManager] startMonitoring];
- // 检测网络连接的单例,网络变化时的回调方法
- [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
- NSLog(@"%ld", status);
- }];
- }
2.JSON方式获取数据
- + (void)JSONDataWithUrl:(NSString *)url success:(void (^)(id json))success fail:(void (^)())fail;
- {
- AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
- NSDictionary *dict = @{@"format": @"json"};
- // 网络访问是异步的,回调是主线程的,因此程序员不用管在主线程更新UI的事情
- [manager GET:url parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
- if (success) {
- success(responseObject);
- }
- } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
- NSLog(@"%@", error);
- if (fail) {
- fail();
- }
- }];
- }
3.xml方式获取数据
- + (void)XMLDataWithUrl:(NSString *)urlStr success:(void (^)(id xml))success fail:(void (^)())fail
- {
- AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
- // 返回的数据格式是XML
- manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
- NSDictionary *dict = @{@"format": @"xml"};
- // 网络访问是异步的,回调是主线程的,因此程序员不用管在主线程更新UI的事情
- [manager GET:urlStr parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
- if (success) {
- success(responseObject);
- }
- } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
- NSLog(@"%@", error);
- if (fail) {
- fail();
- }
- }];
- }
4.post提交json数据
- + (void)postJSONWithUrl:(NSString *)urlStr parameters:(id)parameters success:(void (^)(id responseObject))success fail:(void (^)())fail
- {
- AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
- // 设置请求格式
- manager.requestSerializer = [AFJSONRequestSerializer serializer];
- // 设置返回格式
- manager.responseSerializer = [AFHTTPResponseSerializer serializer];
- [manager POST:urlStr parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
- // NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
- if (success) {
- success(responseObject);
- }
- } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
- NSLog(@"%@", error);
- if (fail) {
- fail();
- }
- }];
- }
5.下载文件
- + (void)sessionDownloadWithUrl:(NSString *)urlStr success:(void (^)(NSURL *fileURL))success fail:(void (^)())fail
- {
- NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
- AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:config];
- NSString *urlString = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
- NSURL *url = [NSURL URLWithString:urlString];
- NSURLRequest *request = [NSURLRequest requestWithURL:url];
- NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
- // 指定下载文件保存的路径
- // NSLog(@"%@ %@", targetPath, response.suggestedFilename);
- // 将下载文件保存在缓存路径中
- NSString *cacheDir = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
- NSString *path = [cacheDir stringByAppendingPathComponent:response.suggestedFilename];
- // URLWithString返回的是网络的URL,如果使用本地URL,需要注意
- // NSURL *fileURL1 = [NSURL URLWithString:path];
- NSURL *fileURL = [NSURL fileURLWithPath:path];
- // NSLog(@"== %@ |||| %@", fileURL1, fileURL);
- if (success) {
- success(fileURL);
- }
- return fileURL;
- } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
- NSLog(@"%@ %@", filePath, error);
- if (fail) {
- fail();
- }
- }];
- [task resume];
- }
6.文件上传-自定义上传文件名
- + (void)postUploadWithUrl:(NSString *)urlStr fileUrl:(NSURL *)fileURL fileName:(NSString *)fileName fileType:(NSString *)fileTye success:(void (^)(id responseObject))success fail:(void (^)())fail
- {
- // 本地上传给服务器时,没有确定的URL,不好用MD5的方式处理
- AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
- manager.responseSerializer = [AFHTTPResponseSerializer serializer];
- //@"http://localhost/demo/upload.php"
- [manager POST:urlStr parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
- // NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"头像1.png" withExtension:nil];
- // 要上传保存在服务器中的名称
- // 使用时间来作为文件名 2014-04-30 14:20:57.png
- // 让不同的用户信息,保存在不同目录中
- // NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
- // // 设置日期格式
- // formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
- // NSString *fileName = [formatter stringFromDate:[NSDate date]];
- //@"image/png"
- [formData appendPartWithFileURL:fileURL name:@"uploadFile" fileName:fileName mimeType:fileTye error:NULL];
- } success:^(AFHTTPRequestOperation *operation, id responseObject) {
- if (success) {
- success(responseObject);
- }
- } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
- if (fail) {
- fail();
- }
- }];
- }
7.文件上传-随机生成文件名
- + (void)postUploadWithUrl:(NSString *)urlStr fileUrl:(NSURL *)fileURL success:(void (^)(id responseObject))success fail:(void (^)())fail
- {
- AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
- // AFHTTPResponseSerializer就是正常的HTTP请求响应结果:NSData
- // 当请求的返回数据不是JSON,XML,PList,UIImage之外,使用AFHTTPResponseSerializer
- // 例如返回一个html,text...
- //
- // 实际上就是AFN没有对响应数据做任何处理的情况
- manager.responseSerializer = [AFHTTPResponseSerializer serializer];
- // formData是遵守了AFMultipartFormData的对象
- [manager POST:urlStr parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
- // 将本地的文件上传至服务器
- // NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"头像1.png" withExtension:nil];
- [formData appendPartWithFileURL:fileURL name:@"uploadFile" error:NULL];
- } success:^(AFHTTPRequestOperation *operation, id responseObject) {
- // NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
- //
- // NSLog(@"完成 %@", result);
- if (success) {
- success(responseObject);
- }
- } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
- NSLog(@"错误 %@", error.localizedDescription);
- if (fail) {
- fail();
- }
- }];
- }
Demo下载地址:AFNetworkingDemo
此文章是基于AFNetworking2.5版本的,需要看AFNetworking2.0版本的请看上一篇文章:AFNetworking2.0使用
AFNetworking2.5使用2的更多相关文章
- AFNetworking2.x 使用过程中遇到的问题
1.//以下写一下关于AFNetworking2.0的GET数据请求问题,刚開始的时候没有写以下标红的代码,所以导致有一个问题.错误显演示样例如以下: Error: Error Domain=AFNe ...
- AFNetworking2.0简易GET,POST请求封装以及使用
AFNetworking2.0简易GET,POST请求封装以及使用 AFNetworking不用我赘述其强大性,本人仅仅做了非常简易的封装,解决了有时候请求出错的问题,提供源码给大家. 封装源码库下载 ...
- AFNetworking2.0源代码解析
写在前面给大家推荐一个不错的站点 点击打开链接 本文測试样例源代码下载地址 近期看AFNetworking2的源代码.学习这个知名网络框架的实现.顺便梳理写下文章. AFNetworking的代码还在 ...
- AFNetworking2.5使用-转
来自:http://blog.csdn.net/daiyelang/article/details/38434023 官网下载2.5版本:http://afnetworking.com/ 此文章是基于 ...
- AFNetworking2.0源码解析<一>
本篇先看看AFURLConnectionOperation,AFURLConnectionOperation继承自NSOperation,是一个封装好的任务单元,在这里构建了NSURLConnecti ...
- soap request by afnetworking2.X/3.X
for 2.X 参考 http://jiapumin.iteye.com/blog/2109378 AFHTTPRequestOperationManager *manager = [AFHTTPRe ...
- AFNetworking2.4.1 解析
http://wenku.baidu.com/view/6ec734a84028915f814dc26d.html
- AFNetworking2.0 NSHipster翻译
AFNetworking 是当前 iOS 和 Mac OS X 开发中最广泛使用的开源项目之一.它帮助了成千上万叫好又叫座的应用,也为其它出色的开源库提供了基础.这个项目是社区里最活跃.最有影响力的项 ...
- AFNetworking2.0后 进行Post请求
本文以新浪微博的Oauth认证为样例进行Post请求的演示 以下直接上代码: #import "ViewController.h" #import "AFNetworki ...
随机推荐
- jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)(转)
版权声明]:版权归作者所有,转载时请以超链接形式标明文章原始出处和作者信息及本声明:http://www.open-lib.com/Forum/Read_69_1.action 前言: 当jquery ...
- artdialog的图片,标题,以及关闭按钮不显示的问题
因其它css样式文件中包含“div{ overflow:hidden; }”引起的artdialog的图片,标题,以及关闭按钮不显示的问题: 如下图: 解决办法:在artdialog的样式文件顶部添加 ...
- 让你提前认识软件开发(19):C语言中的协议及单元測试演示样例
第1部分 又一次认识C语言 C语言中的协议及单元測试演示样例 [文章摘要] 在实际的软件开发项目中.常常要实现多个模块之间的通信.这就须要大家约定好相互之间的通信协议,各自依照协议来收发和解析消息. ...
- 概率图模型(PGM)学习笔记(四)-贝叶斯网络-伯努利贝叶斯-多项式贝叶斯
之前忘记强调了一个重要差别:条件概率链式法则和贝叶斯网络链式法则的差别 条件概率链式法则 贝叶斯网络链式法则,如图1 图1 乍一看非常easy认为贝叶斯网络链式法则不就是大家曾经学的链式法则么,事实上 ...
- webform基础介绍及页面传值(session,cookie)、跳转页面
一,IIS 1.首先知道IIS是个什么东西:它是web服务器软件,安装在服务器上,接受客户端发来的请求,并传送给服务器端,然后响应请求并送回给客户端.类似于饭店里的服务员. 2.会安装IIS——控制面 ...
- C#中类的运用(Eighth day)
又到了总结知识的时刻了,今天在云和学院学习了类的运用,下面是今天所学知识的总结: 理论: 类的定义语法: [访问修饰符] class 类名 { 成员; // 1.通过字段来描述类别信息的变量 ... ...
- BZOJ 1572: [Usaco2009 Open]工作安排Job( 贪心 )
贪心... 按截止时间排序 , 然后从小到大考虑 . 假设当前考虑第 i 个任务 , 若目前已选工作数 < D_i , 那就选 i ; 否则 若已选工作中利润最小的比 P_i 小 , 那就去除它 ...
- PHPExcel 生成图形报表
db.php为数据库操作类, $config为数据库配置,PHPExcel版本为PHPExcel_1.8.0, PHP代码: $dir = dirname(__FILE__); require $d ...
- python中的字符串和数字连接
1. 将数字强制转换成字符串 i = 1000 str1 = "hello" print str1 + str(i) 2. 格式化成字符串 i = 1000 str1 = &quo ...
- poj 2513
http://poj.org/problem?id=2513 73348K 1438MS C++ 1614B解题思路:欧拉路的应用 要点 :1.判断连通性 ...