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 ...
随机推荐
- 一道月薪3W的java面试题 (小明和小强都是张老师的学生,张老师的生日是某月某日,2人都不知道张老师的生日)
小明和小强都是张老师的学生,张老师的生日是M月N日,2人都知道张老师的生日 是下列10组中的一天,张老师把M值告诉了小明,把N值告诉了小强,张老师问他们知道他的生日是那一天吗? 3月4日 3月5日 3 ...
- Java自定义简单标签
Java自定义简单标签可以方便的在页面输出信息,并且对于权限的控制,和对于Jsp标签和servlet代码的分离有着很好的作用. 下面将以权限的控制为例自定义一个标签: 一.标签类型 <wxt: ...
- C#后台发送HTTP请求
using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using Syst ...
- MySQL 存储过程创建表
创建 CREATE PROCEDURE Pro_IsExistTable(ableName varchar(100),out outputParam int)BEGINset @csql=conca ...
- WebForm发布提示:无法加载或找不到oracle.dataaccess文件
出错提示: 在32位错做系统的开发机上引用了第三方插件(oracle的dataaccess)完成的项目,将发布的程序拷贝到64位的服务器上进行发布时提示无法加载或找不到dataaccess文件. 错误 ...
- 关于hibernate子查询参数的问题
private Map<String, Object> createWblHqlContext(boolean needGroup, String startDate, String en ...
- Python读取Excel数据并根据列名取值
一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...
- IE6不支持<a>标签以外元素的hover的解决方案
IE6以及更低版本的浏览器对“:hover”的支持不理想,对于类似的“p:hover”.“img:hover”.“#header:hover”...,今天给大家介绍一种新的方法,可以完美解决IE6不支 ...
- 解决sqlite删除数据后,文件大小不变问题(VACUUM)
删除表格的全部数据: DELETE FROM [Name] 当在sqlite中删除了大量数据后,数据库文件的大小还是那样,没有变.原因是:从Sqlite删除数据后,未使用的磁盘空间被添加到一个内在的” ...
- 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)
深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...