链接地址:http://blog.csdn.net/abc4715760/article/details/46521111

官网下载2.5版本:http://afnetworking.com/

此文章是基于AFNetworking2.5版本的,需要看AFNetworking2.0版本的请看上一篇文章:AFNetworking2.0使用

1.检测网络状态

  1. + (void)netWorkStatus
  2. {
  3. /**
  4. AFNetworkReachabilityStatusUnknown          = -1,  // 未知
  5. AFNetworkReachabilityStatusNotReachable     = 0,   // 无连接
  6. AFNetworkReachabilityStatusReachableViaWWAN = 1,   // 3G 花钱
  7. AFNetworkReachabilityStatusReachableViaWiFi = 2,   // WiFi
  8. */
  9. // 如果要检测网络状态的变化,必须用检测管理器的单例的startMonitoring
  10. [[AFNetworkReachabilityManager sharedManager] startMonitoring];
  11. // 检测网络连接的单例,网络变化时的回调方法
  12. [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
  13. NSLog(@"%ld", status);
  14. }];
  15. }

2.JSON方式获取数据

  1. + (void)JSONDataWithUrl:(NSString *)url success:(void (^)(id json))success fail:(void (^)())fail;
  2. {
  3. AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  4. NSDictionary *dict = @{@"format": @"json"};
  5. // 网络访问是异步的,回调是主线程的,因此程序员不用管在主线程更新UI的事情
  6. [manager GET:url parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
  7. if (success) {
  8. success(responseObject);
  9. }
  10. } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  11. NSLog(@"%@", error);
  12. if (fail) {
  13. fail();
  14. }
  15. }];
  16. }

3.xml方式获取数据

  1. + (void)XMLDataWithUrl:(NSString *)urlStr success:(void (^)(id xml))success fail:(void (^)())fail
  2. {
  3. AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  4. // 返回的数据格式是XML
  5. manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
  6. NSDictionary *dict = @{@"format": @"xml"};
  7. // 网络访问是异步的,回调是主线程的,因此程序员不用管在主线程更新UI的事情
  8. [manager GET:urlStr parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
  9. if (success) {
  10. success(responseObject);
  11. }
  12. } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  13. NSLog(@"%@", error);
  14. if (fail) {
  15. fail();
  16. }
  17. }];
  18. }

4.post提交json数据

  1. + (void)postJSONWithUrl:(NSString *)urlStr parameters:(id)parameters success:(void (^)(id responseObject))success fail:(void (^)())fail
  2. {
  3. AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  4. // 设置请求格式
  5. manager.requestSerializer = [AFJSONRequestSerializer serializer];
  6. // 设置返回格式
  7. manager.responseSerializer = [AFHTTPResponseSerializer serializer];
  8. [manager POST:urlStr parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
  9. //        NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
  10. if (success) {
  11. success(responseObject);
  12. }
  13. } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  14. NSLog(@"%@", error);
  15. if (fail) {
  16. fail();
  17. }
  18. }];
  19. }

5.下载文件

  1. + (void)sessionDownloadWithUrl:(NSString *)urlStr success:(void (^)(NSURL *fileURL))success fail:(void (^)())fail
  2. {
  3. NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
  4. AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:config];
  5. NSString *urlString = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  6. NSURL *url = [NSURL URLWithString:urlString];
  7. NSURLRequest *request = [NSURLRequest requestWithURL:url];
  8. NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
  9. // 指定下载文件保存的路径
  10. //        NSLog(@"%@ %@", targetPath, response.suggestedFilename);
  11. // 将下载文件保存在缓存路径中
  12. NSString *cacheDir = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
  13. NSString *path = [cacheDir stringByAppendingPathComponent:response.suggestedFilename];
  14. // URLWithString返回的是网络的URL,如果使用本地URL,需要注意
  15. //        NSURL *fileURL1 = [NSURL URLWithString:path];
  16. NSURL *fileURL = [NSURL fileURLWithPath:path];
  17. //        NSLog(@"== %@ |||| %@", fileURL1, fileURL);
  18. if (success) {
  19. success(fileURL);
  20. }
  21. return fileURL;
  22. } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
  23. NSLog(@"%@ %@", filePath, error);
  24. if (fail) {
  25. fail();
  26. }
  27. }];
  28. [task resume];
  29. }

6.文件上传-自定义上传文件名

  1. + (void)postUploadWithUrl:(NSString *)urlStr fileUrl:(NSURL *)fileURL fileName:(NSString *)fileName fileType:(NSString *)fileTye success:(void (^)(id responseObject))success fail:(void (^)())fail
  2. {
  3. // 本地上传给服务器时,没有确定的URL,不好用MD5的方式处理
  4. AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  5. manager.responseSerializer = [AFHTTPResponseSerializer serializer];
  6. //@"http://localhost/demo/upload.php"
  7. [manager POST:urlStr parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
  8. //        NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"头像1.png" withExtension:nil];
  9. // 要上传保存在服务器中的名称
  10. // 使用时间来作为文件名 2014-04-30 14:20:57.png
  11. // 让不同的用户信息,保存在不同目录中
  12. //        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
  13. //        // 设置日期格式
  14. //        formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
  15. //        NSString *fileName = [formatter stringFromDate:[NSDate date]];
  16. //@"image/png"
  17. [formData appendPartWithFileURL:fileURL name:@"uploadFile" fileName:fileName mimeType:fileTye error:NULL];
  18. } success:^(AFHTTPRequestOperation *operation, id responseObject) {
  19. if (success) {
  20. success(responseObject);
  21. }
  22. } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  23. if (fail) {
  24. fail();
  25. }
  26. }];
  27. }

7.文件上传-随机生成文件名

  1. + (void)postUploadWithUrl:(NSString *)urlStr fileUrl:(NSURL *)fileURL success:(void (^)(id responseObject))success fail:(void (^)())fail
  2. {
  3. AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  4. // AFHTTPResponseSerializer就是正常的HTTP请求响应结果:NSData
  5. // 当请求的返回数据不是JSON,XML,PList,UIImage之外,使用AFHTTPResponseSerializer
  6. // 例如返回一个html,text...
  7. //
  8. // 实际上就是AFN没有对响应数据做任何处理的情况
  9. manager.responseSerializer = [AFHTTPResponseSerializer serializer];
  10. // formData是遵守了AFMultipartFormData的对象
  11. [manager POST:urlStr parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
  12. // 将本地的文件上传至服务器
  13. //        NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"头像1.png" withExtension:nil];
  14. [formData appendPartWithFileURL:fileURL name:@"uploadFile" error:NULL];
  15. } success:^(AFHTTPRequestOperation *operation, id responseObject) {
  16. //        NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
  17. //
  18. //        NSLog(@"完成 %@", result);
  19. if (success) {
  20. success(responseObject);
  21. }
  22. } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  23. NSLog(@"错误 %@", error.localizedDescription);
  24. if (fail) {
  25. fail();
  26. }
  27. }];
  28. }

Demo下载地址:AFNetworkingDemo

此文章是基于AFNetworking2.5版本的,需要看AFNetworking2.0版本的请看上一篇文章:AFNetworking2.0使用

AFNetworking2.5使用2的更多相关文章

  1. AFNetworking2.x 使用过程中遇到的问题

    1.//以下写一下关于AFNetworking2.0的GET数据请求问题,刚開始的时候没有写以下标红的代码,所以导致有一个问题.错误显演示样例如以下: Error: Error Domain=AFNe ...

  2. AFNetworking2.0简易GET,POST请求封装以及使用

    AFNetworking2.0简易GET,POST请求封装以及使用 AFNetworking不用我赘述其强大性,本人仅仅做了非常简易的封装,解决了有时候请求出错的问题,提供源码给大家. 封装源码库下载 ...

  3. AFNetworking2.0源代码解析

    写在前面给大家推荐一个不错的站点 点击打开链接 本文測试样例源代码下载地址 近期看AFNetworking2的源代码.学习这个知名网络框架的实现.顺便梳理写下文章. AFNetworking的代码还在 ...

  4. AFNetworking2.5使用-转

    来自:http://blog.csdn.net/daiyelang/article/details/38434023 官网下载2.5版本:http://afnetworking.com/ 此文章是基于 ...

  5. AFNetworking2.0源码解析<一>

    本篇先看看AFURLConnectionOperation,AFURLConnectionOperation继承自NSOperation,是一个封装好的任务单元,在这里构建了NSURLConnecti ...

  6. soap request by afnetworking2.X/3.X

    for 2.X 参考 http://jiapumin.iteye.com/blog/2109378 AFHTTPRequestOperationManager *manager = [AFHTTPRe ...

  7. AFNetworking2.4.1 解析

    http://wenku.baidu.com/view/6ec734a84028915f814dc26d.html

  8. AFNetworking2.0 NSHipster翻译

    AFNetworking 是当前 iOS 和 Mac OS X 开发中最广泛使用的开源项目之一.它帮助了成千上万叫好又叫座的应用,也为其它出色的开源库提供了基础.这个项目是社区里最活跃.最有影响力的项 ...

  9. AFNetworking2.0后 进行Post请求

    本文以新浪微博的Oauth认证为样例进行Post请求的演示 以下直接上代码: #import "ViewController.h" #import "AFNetworki ...

随机推荐

  1. Desert King(最优比率生成树)

    Desert King Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 22717   Accepted: 6374 Desc ...

  2. The document "ViewController.xib" could not be opened. Could not read archive.

    The document "ViewController.xib" could not be opened. Could not read archive. Please use ...

  3. poj2486 Apple Tree【区间dp】

    转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4374766.html   ---by 墨染之樱花 [题目链接]http://poj.org/p ...

  4. C#中静态方法的运用和字符串的常用方法(seventh day)

    又来到了今天的总结时间,由于昨天在云和学院学的知识没有弄懂,今天老师又专门给我们非常详细地讲了一遍,在这里非常谢谢老师.O(∩_∩)O 话不多说,下面就开始为大家总结一下静态方法的运用和字符串的常用方 ...

  5. eclipse导出doc文档

    选中需要导出的项目, 1 点击eclipse上面的Project,选择Generate javadoc..., 2 然后配置 javadoc command,比如我本地的路径为: C:\Program ...

  6. codeforces 620E. New Year Tree dfs序+线段树+bitset

    题目链接 给一棵树, 每个节点有颜色, 两种操作, 一种是将一个节点的子树全都染色成c, 一种是查询一个节点的子树有多少个不同的颜色, c<=60. 每个节点一个bitset维护就可以. #in ...

  7. 13. Roman to Integer

    Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 t ...

  8. Python学习之路——字符处理(二)

    一.set集合: set是一个无序且不重复的元素集合 建立一个集合: x = set([1, 'tom', 2, 3, 4]) print(type(x)) print(x) 以上实例运行后反回结果结 ...

  9. 定制一个winCE5.0操作系统

    定制一个winCE5.0操作系统 2009-04-01 09:01:14|  分类: winCE|字号 订阅     定制一个操作系统并模拟器上运行,需要以下几个步骤: STEP 1:用Platfor ...

  10. python爬虫实战1

    转载于:http://blog.csdn.net/dongnanyanhai/article/details/5552431 首先推荐一个网站:中医世家,这个网站上有很多关于中医的资料,光是提供的中医 ...