AFNetworking 简单应用

最近最学习 AFNetworking ,根据自己所学对 AFNetWorking 一些简单应用做了一下简单封装,主要有 get,post形式获取 xml,json,get 方式获取图片,下载文件,上传文件,代码如下:

 1 //
 2 //  AFNetWorking_Demo.h
 3 //  AFNetWorking_Demo
 4 //
 5 //  Created by Ager on 15/11/4.
 6 //  Copyright © 2015年 Ager. All rights reserved.
 7 //
 8
 9 #import <Foundation/Foundation.h>
10
11 @interface AFNetWorking_Demo : NSObject
12
13
14 /**
15  *  get 方法请求 xml
16  *  block success 参数类型 NSXMLParser
17  */
18 + (void)requestXML_GET:(NSString*)strUrl success:(void(^)(id XMLParser))success fail:(void(^)(id error))fail;
19
20 /**
21  *  post 方法请求 xml
22  *  block success 参数类型 NSXMLParser
23  */
24 + (void)requestXML_POST:(NSString*)strUrl parameters:(NSString*)parameters success:(void(^)(id XMLParser))success fail:(void(^)(id error))fail;
25
26 /**
27  *  get 方法请求 JSON
28  *  block success 参数类型为解析好的 JSON 数据 , 字典或数组
29  */
30 + (void)requestJSON_GET:(NSString*)strUrl success:(void(^)(id json))success fail:(void(^)(id error))fail;
31
32 /**
33 *  post 方法请求 JSON
34 *  block success 参数类型为解析好的 JSON 数据 , 字典或数组
35 */
36 + (void)requestJSON_POST:(NSString*)strUrl parameters:(NSDictionary*)parameters success:(void(^)(id json))success fail:(void(^)(id error))fail;
37
38
39 /**
40  *  get 方法请求 img
41  */
42 + (void)requestIMG_GET:(NSString*)strUrl success:(void(^)(id image))success fail:(void(^)(id error))fail;
43
44 /**
45  *  下载文件
46  *
47  *  @param urlStr  要下载文件的路径
48  */
49 + (void)sessionDownloadWithUrl:(NSString *)urlStr success:(void (^)(NSURL *fileURL))success fail:(void (^)())fail;
50
51 /**
52  *  上传文件
53  *
54  *  @param urlStr   上传网址地址
55  *  @param filePath 要上传的文件沙盒路径
56  */
57 + (void)upLoad:(NSString*)urlStr filePath:(NSString *)filePath success:(void(^)(id responseObject))success fail:(void(^)())fail;
58
59 @end

AFNetWorking_Demo.h

  1 //
  2 //  AFNetWorking_Demo.m
  3 //  AFNetWorking_Demo
  4 //
  5 //  Created by Ager on 15/11/4.
  6 //  Copyright © 2015年 Ager. All rights reserved.
  7 //
  8
  9 #import "AFNetWorking_Demo.h"
 10 #import "AFNetworking.h"
 11
 12 @implementation AFNetWorking_Demo
 13
 14
 15 /**
 16  *  get 方法请求 xml
 17  */
 18 + (void)requestXML_GET:(NSString*)strUrl success:(void(^)(id XMLParser))success fail:(void(^)(id error))fail{
 19
 20     AFHTTPRequestOperationManager *mamager = [AFHTTPRequestOperationManager manager];
 21
 22     mamager.responseSerializer = [[AFXMLParserResponseSerializer alloc]init];
 23
 24     [mamager GET:strUrl parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
 25
 26         success(responseObject);
 27
 28     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
 29
 30         fail(error);
 31
 32     }];
 33
 34 }
 35
 36
 37
 38 /**
 39  *  post 方法请求 xml
 40  *
 41  * parameters 为 JSON 数据类型
 42  */
 43 + (void)requestXML_POST:(NSString*)strUrl parameters:(NSString*)parameters success:(void(^)(id XMLParser))success fail:(void(^)(id error))fail{
 44
 45     AFHTTPRequestOperationManager *maneger = [AFHTTPRequestOperationManager manager];
 46     //设置请求格式
 47     maneger.requestSerializer = [[AFJSONRequestSerializer alloc]init];
 48     //设置返回数据格式
 49     maneger.responseSerializer = [[AFXMLParserResponseSerializer alloc]init];
 50
 51
 52     [maneger POST:strUrl parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
 53         success(responseObject);
 54     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
 55         fail(error);
 56     }];
 57 }
 58
 59 /**
 60  *  get 方法请求 json
 61  */
 62 + (void)requestJSON_GET:(NSString*)strUrl success:(void(^)(id json))success fail:(void(^)(id error))fail{
 63
 64     AFHTTPRequestOperationManager *mamager = [AFHTTPRequestOperationManager manager];
 65
 66     mamager.responseSerializer = [[AFJSONResponseSerializer alloc]init];
 67
 68     mamager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/plain",@"text/html",nil];
 69
 70     [mamager GET:strUrl parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
 71
 72         success(responseObject);
 73
 74     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
 75
 76         fail(error);
 77
 78     }];
 79
 80 }
 81
 82
 83
 84
 85 + (void)requestIMG_GET:(NSString*)strUrl success:(void(^)(id image))success fail:(void(^)(id error))fail{
 86     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
 87
 88     manager.responseSerializer = [[AFImageResponseSerializer alloc]init];
 89
 90     [manager GET:strUrl parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
 91         if (success) {
 92             success(responseObject);
 93         }
 94     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
 95         if (fail) {
 96             fail(error);
 97         }
 98     }];
 99 }
100
101 /**
102  *  文件下载
103  */
104 + (void)sessionDownloadWithUrl:(NSString *)urlStr success:(void (^)(NSURL *fileURL))success fail:(void (^)())fail
105 {
106
107     AFURLSessionManager *manage = [[AFURLSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
108
109     //设置 request
110     NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]];
111        //设置下载任务
112     NSURLSessionDownloadTask *tast = [manage downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
113         //指定文件下载路径
114         //将下载文件保存在缓存路径中
115
116         NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
117         NSString *filePath = [path stringByAppendingString:response.suggestedFilename];
118
119         // URLWithString返回的是网络的URL,如果使用本地URL,需要注意
120         NSURL *url = [NSURL fileURLWithPath:filePath];
121
122         if (success) {
123             success(url);
124         }
125         return url;
126
127     } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
128         NSLog(@"%@---- %@", filePath, error);
129         if (error) {
130             fail();
131         }
132     }];
133
134     [tast resume];
135 }
136
137 /**
138  *  文件上传
139  *  block success 参数类型为解析好的 JSON 数据 , 字典或数组
140  */
141 + (void)upLoad:(NSString*)urlStr filePath:(NSString *)filePath success:(void(^)(id responseObject))success fail:(void(^)())fail{
142
143     AFURLSessionManager *manager = [[AFURLSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
144      NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]];
145
146     NSURLSessionUploadTask *task = [manager uploadTaskWithRequest:request fromFile:[NSURL fileURLWithPath:filePath] progress:nil completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
147         if (error) {
148             fail();
149         }else{
150             success(responseObject);
151         }
152     }];
153     [task resume];
154
155
156 }
157
158 /**
159  *  POST - 请求JSON
160  *  需要导入 UIKit+AFNetworking
161  */
162 + (void)requestJSON_POST:(NSString*)strUrl parameters:(NSDictionary*)parameters success:(void(^)(id json))success fail:(void(^)(id error))fail{
163
164     AFHTTPRequestOperationManager *maneger = [AFHTTPRequestOperationManager manager];
165     //设置请求格式
166     maneger.requestSerializer = [[AFHTTPRequestSerializer alloc]init];
167     //设置返回数据格式
168     maneger.responseSerializer = [[AFJSONResponseSerializer alloc]init];
169
170     maneger.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/plain",@"text/html",nil];
171
172     [maneger POST:strUrl parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
173         success(responseObject);
174     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
175         fail(error);
176     }];
177 }
178
179
180 @end

AFNetWorking_Demo.m

AFNetworking-2.6.1.zip 下载

时间: 2025-01-04 09:01:12

AFNetworking 简单应用的相关文章

AFNetWorking 简单介(XML,JSON解析和判断网络状态

//AFNetWorking 当下最流行的数据请求方法 里面不仅包含数据请求还包含数据解析 //包含的数据请求就是对系统类NSURLConnection的封装 //数据解析(NSJSONSerialization.XMLParser) //AFNetworking 下至兼容ios6.0 以及block语法 arc //通过AFNetWorking请求json数据 并解析 //<1>创建http请求操作管理者对象 AFHTTPRequestOperationManager * manager =

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

iOS边练边学--AFNetWorking框架GET、Post、Download、Upload,数据解析模式以及监控联网状态

一.AFNETWorking简单使用 get请求 get请求,以后经常用NSURLSession底层的写的部分 简单的post请求 用post请求下载文件,方法很多,还可以通过upload任务来执行 download任务 二.框架中的数据解析,默认是将数据按照json来解析,设置方法 三.AFN框架监控联网状态

AFN总结

AFN小结 1,AFN概念.原理 2,AFN的封装使用 3,AFN与其它框架对比 ————————————————————————————————— 1 , AFN的概念原理: AFN的基础是NSURL,AFN的直接操作对象AFHTTPClient是一个实现了NSCoding和NSCopying协议的NSObject子类.AFHTTPClient是一个封装了一系列操作方法的“工具类”,处理请求的操作类是一系列单独的,基于NSOperation封装的,AFURLConnectionOperatio

超文本传输协议,http请求过程

超文本传输协议. 2.http请求过程. { 1> http协议: 超文本传输协议(Hypertext Transfer Protocol) { http协议规定了客户端和服务器之间的数据传输格式. http协议是在网络开发中最常用的协议.不管是移动客户端还是PC端,访问网络资源经常使用http协议. http优点: <1> 简单快速: http协议简单,通信速度很快. <2> 灵活: http协议允许传输任意类型的数据. <3> http协议是短连接(非持续性连

我认识的网络

一.OSI七层模型 OSI七层模型(五层):本质:每一层都与很多的网络协议 (1) 应用层  :最接近用户,将应用程序呈现给用户,HTTP,FTP,POP3,SMTP,telnet ,DHCP (2)表示层  :解决不同系统间的通信 (3)会话层  :建立和管理应用程序间的通信 (4)传输层  : 建立端口间通信, TCP(三次握手),UDP(不可靠) (5)网络层  : 建立主机间的通信,IP (6)数据链路层 :确定数据的分组和解读方式,提供错误检测,形成.拆分数据帧,以太网协议,ARP (

Alamofire请求网络

HTTP - GET和POST请求- 如果要传递大量数据,比如文件上传,只能用POST请求- GET的安全性比POST要差些,如果包含机密/敏感信息,建议用POST- 如果仅仅是索取数据(数据查询),建议用GET- 如果是增加.修改.删除数据,建议使用POST iOS中的HTTP- NSURLConnection:用法简单,最古老最经典最直接的一种方案- NSURLSession:iOS7新出的技术,功能比NSURLConnection更加强大- AFNetworking:简单易用,提供了基本够

ios开发中-AFNetworking 的简单介绍

Blog: Draveness 关注仓库,及时获得更新: iOS-Source-Code-Analyze 在这一系列的文章中,我会对 AFNetworking 的源代码进行分析,深入了解一下它是如何构建的,如何在日常中完成发送 HTTP 请求.构建网络层这一任务. AFNetworking 是如今 iOS 开发中不可缺少的组件之一.它的 github 配置上是如下介绍的: Perhaps the most important feature of all, however, is the ama

AFNetWorking的实现分析以及简单使用

一:声明本 人以前一直是使用ASI网络请求类库的.最近才开始了解使用AFNetworing这个类库.网上也肯定会有更好的介绍AFN的博客文章,希望大家辩证阅 读,取之精华,去其糟粕.本人的认识可能有错误或者不全的地方,还请大家不吝指正.有问题可以直接在博客留言,不接受QQ询问.博客源地址:http://386502324.blog.163.com/blog/static/1134693772015522115237696/ 二:综述以下就是cocospod中AFNetworing除了几个分类外的